对于在不同服务器上的实例之间可能存在细微配置差异的 Web 应用程序,什么是可接受的生产部署
What is an acceptable production deployment for a web app that may have slight configuration differences between instances on different servers
所以现在我们使用 Git 作为我们的版本控制。我们还使用 docker compose 来管理部署
我想处理这样一个事实,即我们有一些客户希望他们自己的网站版本有轻微的 docker-compose.yml 差异(例如由 [=20= 定义的环境变量) ]).这导致 git 拉动担心 docker-compose.yml 文件中未提交的更改。
我在想我可以从 master 打开一个分支,然后随着时间的推移从 master 拉取更改,这样我们就不需要担心配置特定文件的更改。
当然,我可能完全遗漏了一些东西,并且有一个简单的解决方案可以解决所有这些问题。
标准的 git 方法是创建一个分支并经常从 master 更新它。这是一种很常见的方法。
事实上,大多数开源项目都使用非常相似的技术,即从主存储库中获取一个分支,贡献者的自定义更改在分支存储库上完成。
作为一个小评论,最好在 env_file 中维护环境变量,因为 env 值可能与客户端不同。这样你就可以减少 docker-compose 文件中的手动合并。
更新
另一个可能值得评估的想法是 git submodules。基本上,您可以将需要不同的东西放入 git 子模块中,并在您的仓库和客户的仓库之间保持父模块相同。这样客户端就可以指向他自己的子模块,就不需要维护单独的分支了。
我们正在使用这种简单的方法:
我们有一个存储库包含所有实例的所有配置。我们的目录结构是:
/base
docke-compose.yml
.env
/test
docker-compose.override.yml
.env
/production
docker-compose.override.yml
.env
它允许我们在每个 docker-compose.yml
中不重复一些基本的东西也它允许我们使用 git branches
来做一些新的 features/bugfixes。
所以现在我们使用 Git 作为我们的版本控制。我们还使用 docker compose 来管理部署
我想处理这样一个事实,即我们有一些客户希望他们自己的网站版本有轻微的 docker-compose.yml 差异(例如由 [=20= 定义的环境变量) ]).这导致 git 拉动担心 docker-compose.yml 文件中未提交的更改。
我在想我可以从 master 打开一个分支,然后随着时间的推移从 master 拉取更改,这样我们就不需要担心配置特定文件的更改。
当然,我可能完全遗漏了一些东西,并且有一个简单的解决方案可以解决所有这些问题。
标准的 git 方法是创建一个分支并经常从 master 更新它。这是一种很常见的方法。
事实上,大多数开源项目都使用非常相似的技术,即从主存储库中获取一个分支,贡献者的自定义更改在分支存储库上完成。
作为一个小评论,最好在 env_file 中维护环境变量,因为 env 值可能与客户端不同。这样你就可以减少 docker-compose 文件中的手动合并。
更新
另一个可能值得评估的想法是 git submodules。基本上,您可以将需要不同的东西放入 git 子模块中,并在您的仓库和客户的仓库之间保持父模块相同。这样客户端就可以指向他自己的子模块,就不需要维护单独的分支了。
我们正在使用这种简单的方法: 我们有一个存储库包含所有实例的所有配置。我们的目录结构是:
/base
docke-compose.yml
.env
/test
docker-compose.override.yml
.env
/production
docker-compose.override.yml
.env
它允许我们在每个 docker-compose.yml
中不重复一些基本的东西也它允许我们使用 git branches
来做一些新的 features/bugfixes。