【发布时间】:2020-02-01 23:00:44
【问题描述】:
我正在开发一个 java (maven) 项目,其中开发/测试环境中的代码与生产环境中的代码不同。不同的部分主要是配置文件或与 Docker 相关的文件,但这仍然会造成很多混乱。如果我要保留 pom 文件或 prod 的 Dockerfile,dev 将无法工作,反之亦然。
现在,在部署到 prod 时,
我从现有的deploy 分支在 git 中创建了一个新分支,该分支已经具有不同的 Dockerfile 和 pom。
在那里,我从 src/ 目录中检查更改,例如
$ git checkout origin/feature-name —- src/
并在必要时手动提供对其余文件的任何其他更改。
所有这些过程变得乏味,很多可能的错误指日可待(假设我忘记更改依赖项的版本)。此外,这阻止了我将部署自动化到生产环境。我该如何解决这种情况?
更新
src/ 目录中的实际代码没有改变。环境之间的变化是
- dev/test 环境使用 secret,但 prod 不使用,这意味着不同的 docker-compose 文件和不同的入口点
- 生产中的 pom 文件具有其他元素(即指向私有工件的父级)。正如@Saeed 所提到的,使用配置文件不能添加/更改或元素。
- 生产中的 Dockerfile 使用在开发(或测试)期间无法访问的私有映像,而我使用的是公共等效映像。
【问题讨论】:
-
如果您的测试代码库和生产代码库不同,您如何实际测试要运送到生产环境的代码?我会先尝试解决这个问题;您自然会有不同的配置(副本数、数据库设置、主机名),但实际的 代码 应该是相同的。在 Docker 上下文中,您应该在所有环境中运行相同的单个映像。
-
我已经用一组环境之间的差异更新了这个问题。我希望这会有所帮助
标签: git docker dockerfile maven-3 continuous-deployment