开发者指南 · 14
Docker 部署
14.1 多阶段构建
dockerfile
# Stage 1: frontend-builder
FROM node:20-alpine AS frontend-builder
RUN npm ci && npm run build # → dist/
# Stage 2: production
FROM python:3.11-slim
RUN pip install -r requirements.txt
RUN npm install express http-proxy-middleware
COPY --from=frontend-builder /build/dist /app/frontend/dist- React 源码和 devDependencies 不进入最终镜像
- Express
server.js从dist/提供静态文件
14.2 docker-compose
text
Cloudflare (SSL) → Nginx (:80) → Express (:3000) → FastAPI (:8000)- Nginx:SSL 终止 + 反向代理(
nginx/nginx.conf) - Express:静态资源 +
/api代理 - FastAPI:核心后端
- 用户数据 volume:
./data/users:/app/users
14.3 启动脚本(start.sh)
- 启动 FastAPI(
:8000) - 等待就绪后启动 Express(
:3000) wait -n监控两个进程
14.4 健康检查
容器内置健康检查(检查 FastAPI /docs 端点),Nginx 在后端就绪后才接受流量。
14.5 .dockerignore
排除 frontend/node_modules/ / frontend/dist/ / venv/ / data/ / .env / .git/。