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