Docker 运行时配置:镜像不可变,配置在部署时注入
背景 同一镜像如果因环境不同而重新构建,就很难证明测试与生产运行的是同一个产物。应把部署配置与不可变应用分离。 核心判断 镜像只包含程序和非敏感静态资源,环境参数在启动时注入。 配置加载后统一校验,必要值缺失应直接失败。 记录镜像 digest 和配置版本,回滚时同时检查二者兼容性。 最小示例 下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。 FROM gcr.io/distroless/static-debian12 COPY app /app ENTRYPOINT ["/app"] 边界与误区 示例假定 Go 等静态二进制可在该运行镜像中执行;动态链接、CA、时区和文件权限需单独确认。不要把密钥 COPY 进镜像层。 验证方式 同一个 digest 分别在测试与生产配置下启动,核对生效值和日志脱敏。验证配置缺失、不可写目录以及运行用户权限。 小结 镜像只包含程序和安全默认值,环境差异通过运行时配置注入并在启动时校验。