添加docker构建配置
This commit is contained in:
49
Dockerfile
Normal file
49
Dockerfile
Normal file
@@ -0,0 +1,49 @@
|
||||
# ====== Frontend build stage ======
|
||||
FROM node:18-alpine AS fe-builder
|
||||
WORKDIR /fe
|
||||
COPY SmyWorkCollect-Frontend/package*.json ./
|
||||
# 使用 npm install 以避免对锁文件严格校验导致构建失败
|
||||
RUN npm install
|
||||
COPY SmyWorkCollect-Frontend/ .
|
||||
# 确保不带 REACT_APP_API_URL,生产默认使用相对路径 /api
|
||||
RUN npm run build
|
||||
|
||||
# ====== Final runtime (Python + Nginx + Supervisor) ======
|
||||
FROM python:3.11-slim
|
||||
|
||||
ENV PYTHONDONTWRITEBYTECODE=1 \
|
||||
PYTHONUNBUFFERED=1
|
||||
|
||||
# 安装系统依赖: nginx, supervisor, curl
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends nginx supervisor curl \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# 创建目录结构
|
||||
WORKDIR /app
|
||||
RUN mkdir -p /app/backend \
|
||||
/app/SmyWorkCollect-Frontend/build \
|
||||
/app/SmyWorkCollect-Frontend/config \
|
||||
/run/nginx \
|
||||
/var/log/supervisor
|
||||
|
||||
# 复制后端依赖并安装(包含 gunicorn)
|
||||
COPY SmyWorkCollect-Backend/requirements.txt /app/backend/requirements.txt
|
||||
RUN pip install --no-cache-dir -r /app/backend/requirements.txt \
|
||||
&& pip install --no-cache-dir gunicorn
|
||||
|
||||
# 复制后端代码
|
||||
COPY SmyWorkCollect-Backend/ /app/backend/
|
||||
|
||||
# 复制前端构建产物到预期目录(与后端中的路径逻辑兼容)
|
||||
COPY --from=fe-builder /fe/build /app/SmyWorkCollect-Frontend/build
|
||||
|
||||
# 复制 Nginx 与 Supervisor 配置
|
||||
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
||||
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
||||
|
||||
# 暴露对外端口 8383(Nginx 监听此端口)
|
||||
EXPOSE 8383
|
||||
|
||||
# 运行 supervisor 同时管理 nginx 与 gunicorn(Flask)
|
||||
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
|
||||
Reference in New Issue
Block a user