背景

同一镜像如果因环境不同而重新构建,就很难证明测试与生产运行的是同一个产物。应把部署配置与不可变应用分离。

核心判断

  1. 镜像只包含程序和非敏感静态资源,环境参数在启动时注入。
  2. 配置加载后统一校验,必要值缺失应直接失败。
  3. 记录镜像 digest 和配置版本,回滚时同时检查二者兼容性。

最小示例

下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。

FROM gcr.io/distroless/static-debian12
COPY app /app
ENTRYPOINT ["/app"]

边界与误区

示例假定 Go 等静态二进制可在该运行镜像中执行;动态链接、CA、时区和文件权限需单独确认。不要把密钥 COPY 进镜像层。

验证方式

同一个 digest 分别在测试与生产配置下启动,核对生效值和日志脱敏。验证配置缺失、不可写目录以及运行用户权限。

小结

镜像只包含程序和安全默认值,环境差异通过运行时配置注入并在启动时校验。