docker - 使用 DevOps 管道创建应用程序的分发包
问题描述
我们希望创建应用程序的捆绑包,以便分发给客户端等。一个应用程序可以有多个组件。例如:一个应用程序可以有一个 spring 服务器和一个调度程序,因此为了分发这个应用程序,两个 jar 都必须提供给客户端。
我们想使用 Docker/Docker compose 来完成这个。例如:我们给客户端一个包含 Docker 组合文件的包,它们只是运行docker-compose up
以启动应用程序。
我们目前有一个 Jenkins 管道,运行时会生成一个 zip 文件,其中包含.tar
组件的所有 Docker 映像文件。还有一个start.sh
(或start.bat
)文件,在运行时会加载所有 Docker 镜像并运行docker-compose up
.
其中一些组件具有客户端需要根据其环境配置的属性(例如:SCM URL)。如果组件是基于 Spring/Java 的,我们会将 application.properties 文件从外部挂载到 docker 镜像中docker-compose.yml
这一切都有效,我只想知道我们当前使用的流程是否符合行业标准,或者是否有更好的方法来满足要求?任何可以简化流程的开源工具?
更新:我们在执行上述过程时遇到的唯一“问题”是必须更改配置属性以适应我们的 docker-compose 环境。例如application.properties
,在开发人员签入到 SCM 的文件之一中,他指定了 MySQL 主机,localhost
而在我们的 Docker compose 环境中部署时,MySQL 容器将有一个主机名mysql
。我们如何处理这样的问题?在 Java/Spring 应用程序中,我们是否使用配置文件?例如:application-dev.properties
& application-docker.properties
。或者有没有更好的方法来进行应用程序配置管理
解决方案
推荐阅读
- google-chrome - 使 Chrome Devtools 设备大小与物理设备大小匹配
- javascript - 将字符串(日期)转换为格式 D, d MY
- neural-network - 对 NeRF 中的 get_rays 函数感到困惑
- node.js - 有没有办法解决这个错误
- node.js - 请求对象的未定义值
- capl - 如何将消息的值从十六进制转换为十进制?
- javascript - Karma Istanbul 仅生成一个文件夹的覆盖范围
- google-app-engine - 在 App Engine/meteor-files 上流星多个实例
- c# - 在 WPF Prism 应用程序中无法识别 onActivated 事件处理程序
- javascript - 在打字稿中,我们可以将两个枚举转换为一个对象键值吗