Files
SmyWorkCollect/Dockerfile
2025-12-13 20:36:31 +08:00

50 lines
1.6 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ====== 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
# 暴露对外端口 8383Nginx 监听此端口)
EXPOSE 8383
# 运行 supervisor 同时管理 nginx 与 gunicornFlask
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]