文章列表
2 分钟阅读

Docker 生产环境部署注意事项:镜像、日志、数据卷和健康检查

更新说明:新增 Docker 生产部署检查清单。


系列:容器部署基础

第 10 / 10 篇

  1. Docker 安装与使用教程:从零部署第一个容器服务
  2. Dockerfile 入门:构建自己的应用镜像
  3. Docker Compose 使用指南:管理多容器服务
  4. Docker 数据卷与备份:数据库容器怎么保护数据
  5. Docker 网络与端口映射:容器之间怎么通信
  6. Docker 日志和排障:logs、exec、inspect、stats
  7. 用 Docker 部署一个 Python Web 项目
  8. Nginx 反向代理入门:静态文件、HTTPS 和 Web 服务转发
  9. HTTPS 和证书部署指南:Let’s Encrypt、Cloudflare、Nginx 怎么配
  10. Docker 生产环境部署注意事项:镜像、日志、数据卷和健康检查

Docker 能把服务跑起来,但“跑起来”和“适合生产环境”不是一回事。生产环境至少要关注镜像、配置、日志、数据、健康检查和重启策略。

可以先看 Docker 安装与使用教程:从零部署第一个容器服务Docker Compose 使用指南:管理多容器服务

镜像不要现场拼

生产镜像应该由 Dockerfile 构建,版本固定,能重复生成。

Dockerfile
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["gunicorn", "app.wsgi:application", "-b", "0.0.0.0:8000"]

不要进入容器手动安装依赖。容器重建后,手动改动都会丢。

配置走环境变量

生产密钥不要写进镜像,也不要提交到仓库。Compose 可以这样传:

compose.yml
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 数据卷与备份:数据库容器怎么保护数据

日志要能看

容器日志至少要能通过命令看到:

Terminal window
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 自动部署实战:从检查到发布的完整流程。上线后出问题时,再按 线上问题排查流程:日志、端口、进程、磁盘、网络怎么一步步看 逐步定位。