【发布时间】:2021-11-29 05:39:12
【问题描述】:
针对不同环境维护图像的最佳方法是什么?为什么?
选项:1
为特定环境 dev、stg、prod 创建差异图像。我们必须告诉 Jenkins 作业我们正在为哪个环境构建映像,spring boot 将加载特定的配置文件。
优点 :
环境特定图像。
缺点:
每个环境都会有不同的图像,所以我们必须每次都构建它。
选项:2 构建 1 个镜像,外部化配置文件。在构建映像时,创建一个共享/挂载路径,放置一个适当的配置文件。初始化时加载配置文件。 优点: 所有环境都可以使用一张图像。 缺点: 自定义配置处理。 需要 2 个团队之间的协调。
如果有其他选择,请告诉我上述方法或任何其他方法的优缺点。
【问题讨论】:
-
选项 3,在 K8s 配置图中指定特定于环境的覆盖。或 Docker Compose 中的环境变量或您正在使用的任何内容。我会避免构建不同的图像。
-
@BoristheSpider 需要 2 个团队之间的协调。有什么方法可以从我的资源文件夹中读取配置并使其在运行时可用?
-
您可以使用弹簧配置文件,然后为环境设置配置文件或以其他方式触发它。协调方面仍然存在 - 因为服务团队需要维护每个环境的配置并与环境所有者协调以确保配置正确。
标签: spring-boot docker configuration containers docker-image