生产环境部署Docker容器必须配置安全、稳定、可观测、可维护四大要素:强制资源限制(--memory、--cpus)、只读根文件系统(--read-only)、健康检查(HEALTHCHECK)、日志轮转(--log-opt)、配置与数据持久化挂载、固定版本镜像、密钥外部管理及Alpine精简基础镜像。
生产环境部署 Docker 容器,不是“跑起来就行”,而是要兼顾**安全、稳定、可观测、可维护**。核心不在命令多复杂,而在关键配置是否到位。下面直接说重点。裸用 docker run nginx 在生产中等于埋雷。至少补全这些:
--tmpfs 或 -v 挂载可写路径)容器“running”不等于服务可用。比如数据库容器启动了,但初始化还没完,应用连上去就失败。
正确做法是用 HEALTHCHECK 验证业务层面是否就绪:
curl -f http://localhost/health || exit 1
pg_isready -U user -d dbname
docker-compose.yml 的 healthcheck 字段中interval、timeout、retries,避免误判默认日志存在 /var/lib/docker/ 下,不轮转会撑爆磁盘;配置文件硬编码进镜像,升级就丢配置。
--log-opt max-size=100m --log-opt max-file=3,自动切割保留-v /host/conf/nginx.conf:/etc/nginx/nginx.conf:ro 挂载,不打包进镜像/var/lib/mysql、Redis 的 /data,必须挂载到宿主机或命名卷两个高频翻车点:用 latest 镜像导致行为突变;把密码明文写进 docker-compose.yml 提交到 Git。
nginx:1.27-alpine,不用 latest
docker secrets(Swarm)或 env_file + .env.prod(Compose),且该文件不进 Gitalpine 系列(小、轻、攻击面小),避免 ubuntu:latest 这类大而全的镜像