系列:容器部署基础
- Docker 安装与使用教程:从零部署第一个容器服务
- Dockerfile 入门:构建自己的应用镜像
- Docker Compose 使用指南:管理多容器服务
- Docker 数据卷与备份:数据库容器怎么保护数据
- Docker 网络与端口映射:容器之间怎么通信
- Docker 日志和排障:logs、exec、inspect、stats
- 用 Docker 部署一个 Python Web 项目
- Nginx 反向代理入门:静态文件、HTTPS 和 Web 服务转发
- HTTPS 和证书部署指南:Let’s Encrypt、Cloudflare、Nginx 怎么配
- Docker 生产环境部署注意事项:镜像、日志、数据卷和健康检查
Docker 能把服务跑起来,但“跑起来”和“适合生产环境”不是一回事。生产环境至少要关注镜像、配置、日志、数据、健康检查和重启策略。
可以先看 Docker 安装与使用教程:从零部署第一个容器服务 和 Docker Compose 使用指南:管理多容器服务。
镜像不要现场拼
生产镜像应该由 Dockerfile 构建,版本固定,能重复生成。
FROM python:3.12-slim
WORKDIR /appCOPY requirements.txt .RUN pip install --no-cache-dir -r requirements.txtCOPY . .
CMD ["gunicorn", "app.wsgi:application", "-b", "0.0.0.0:8000"]不要进入容器手动安装依赖。容器重建后,手动改动都会丢。
配置走环境变量
生产密钥不要写进镜像,也不要提交到仓库。Compose 可以这样传:
services: web: image: app-web:20260419 env_file: - .env配置管理可以参考 Python Web 项目配置管理:环境变量、.env 和生产配置怎么拆。
数据卷要明确
数据库、上传文件、持久化缓存都要挂载卷。否则容器删了,数据也可能跟着没。
services: postgres: image: postgres:16 volumes: - pgdata:/var/lib/postgresql/data
volumes: pgdata:备份策略可以接着看 Docker 数据卷与备份:数据库容器怎么保护数据。
日志要能看
容器日志至少要能通过命令看到:
docker compose logs -f web如果日志只写进容器内部文件,排查时会很难受。更好的做法是应用输出到 stdout/stderr,再由 Docker 或日志系统收集。
健康检查和重启策略
services: web: restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 5s retries: 3健康检查不是万能的,但它能帮你发现服务启动失败、依赖没连上这类问题。
上线前检查清单
- 镜像能从空环境重新构建
.env不在仓库里- 数据目录使用 volume
- 日志能通过
docker compose logs查看 - 服务有重启策略
- 关键服务有健康检查
- Nginx 反向代理配置明确
- 数据库有备份和恢复演练
总结
Docker 的价值是让部署更可重复。生产环境里最怕的就是“这台机器上手动改过一点”,因为没人能完整复原。镜像、配置、数据、日志和健康检查都明确后,部署才真正可维护。
如果还没有完整发布流程,可以参考 用 Docker 部署一个 Python Web 项目 和 GitHub Actions 自动部署实战:从检查到发布的完整流程。上线后出问题时,再按 线上问题排查流程:日志、端口、进程、磁盘、网络怎么一步步看 逐步定位。