我们正在使用 docker-compose 部署 Java 后端和 React UI 应用程序。我们的 Docker 容器正在运行 Java、Caddy 和 Postgres。
这种架构的不寻常之处在于我们没有将应用程序作为集群运行。每个用户都有自己的服务器和自己的子域。一切运行良好,但随着用户数量的增长,我们需要一种管理/更新机器的策略。
我们可以在半夜接受一些停机时间,因此我们不需要高可用性。
我们只是不确定在所有机器上更新软件的最佳方式是什么。而且我们对 Docker 还很陌生,对 Kubernetes 或 Ansible、Chef、Puppet 等没有经验。但我们很快就能上手。
我们预计会有成百上千的用户。每台机器运行相同的代码,但具有用户唯一的环境变量。我们的原始配置会解决这个问题,因此我们预计不必通过软件更新来更改这些配置。但是一个也可以提供这种能力的解决方案并不是一件坏事。
所以,问题是,当我们进行代码更改并想要部署更新的 Java jar 或 React 应用程序时,以自动化方式将它们发布到那里的最佳方法是什么?
我们考虑过的一些事情:
- Docker Hub(关于速率限制的担忧)
- 部署我们自己的 Docker 存储库
- Kubernetes
- Ansible
- https://containrrr.dev/watchtower/
我们可能需要的其他东西包括构建和更新 Docker 映像的 GitHub 操作。
我们对此处未列出的想法持开放态度,因为关于管理许多运行 docker-compose 的机器,我们有很多不知道的地方。因此,请随时提供建议。非常感谢!