SOLID Docker
硬性限制
- 保持 Dockerfile 可读且简短;使用多阶段拆分,避免巨型层
- 每个镜像仅包含一个服务关注点(如可行)
实践
- 固定基础镜像标签(生产环境中避免使用浮动的
latest) - 优先使用多阶段构建,以保持运行镜像体积精简
- 绝不在镜像层中内嵌机密信息、令牌或私钥
- 使用
.dockerignore排除.venv、data/、.git、本地配置文件 - 当应用栈允许时,在最终阶段以非 root 用户运行
- 记录所需的环境变量,而不是硬编码主机 IP
检查清单
- 镜像中无机密信息
- 构建上下文已最小化
- 运行镜像仅包含所需内容