Article
Docker Compose 生产部署:端口、健康检查与宿主机 Nginx
Docker Compose 生产部署:端口、健康检查与宿主机 Nginx
同机已有 Nginx 或其他站点时,业务容器应只监听 127.0.0.1,由宿主机统一入口。
推荐端口绑定
ports:
- "127.0.0.1:13000:3000" # frontend
- "127.0.0.1:18080:8080" # backend
不要把后端直接暴露到公网;上传与 API 一律经 Nginx 转发。
健康检查
- MySQL:「mysqladmin ping」
- Backend:「/health」
- Frontend:请求首页路径(注意 「basePath」 为空时是 「/」)
Compose 里 「depends_on: condition: service_healthy」 能显著减少「前端起来了但 API 还没好」的启动毛刺。
Nginx 要点
- 「proxy_set_header Host / X-Forwarded-*」 必须带上,否则日志与 HTTPS 跳转会错
- WebSocket / HMR 不需要时,仍建议带上 「Upgrade」 头以兼容 Next.js
- 证书用 certbot 覆盖 「www」 与裸域,避免只签一个主机名
同步与密钥
代码可用 rsync 同步;永远不要把 「.env.prod」、证书目录同步覆盖掉。密钥只活在服务器上。
小结
容器负责应用生命周期,宿主机 Nginx 负责流量与证书。边界清晰后,同机多项目才不会互相抢端口。