对于在不同服务器上的实例之间可能存在细微配置差异的 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。