campusloop / Dockerfile
Dridft's picture
Upload 8 files
d9e5dfd verified
raw
history blame contribute delete
935 Bytes
# 使用官方Node.js 18 LTS镜像
FROM node:18-slim
# 设置工作目录
WORKDIR /app
# 安装系统依赖
RUN apt-get update && apt-get install -y \
python3 \
make \
g++ \
&& rm -rf /var/lib/apt/lists/*
# 复制package.json和package-lock.json
COPY package*.json ./
# 安装npm依赖
RUN npm install --omit=dev && npm cache clean --force
# 复制应用代码
COPY . .
# 创建必要的目录
RUN mkdir -p uploads logs images
# 设置权限并切换用户
RUN chown -R 1000:1000 /app
USER 1000
# 暴露Hugging Face Spaces标准端口
EXPOSE 7860
# 设置环境变量
ENV NODE_ENV=production
ENV PORT=7860
# 健康检查
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
CMD node -e "require('http').get('http://localhost:7860/api/health', (res) => { process.exit(res.statusCode === 200 ? 0 : 1) }).on('error', () => process.exit(1))"
# 启动应用
CMD ["node", "server-mysql.js"]