docker - 使用 docker-compose 的多个应用程序和共享容器
问题描述
我试图了解这里最好的方法是什么。
一台服务器,多个应用程序,一些容器使用相同的图像。
示例 #1:
docker-compose.yml
每个应用程序有两个文件
services:
db:
image: mariadb:latest
...
app:
image: app/one
depends_on:
- db
...
services:
db:
image: mariadb:latest
...
app:
image: app/two
depends_on:
- db
...
示例 #2:
将一切合二为一docker-compose.yml
services:
db:
image: mariadb:latest
...
app1:
image: app/one
depends_on:
- db
...
app2:
image: app/two
depends_on:
- db
...
有没有普遍的做法?
解决方案
两种常见的做法:
使用应用程序的源代码签入一个
docker-compose.yml
文件(通常位于存储库的根目录旁边Dockerfile
)不要在应用程序之间共享数据库(容器可以很容易地启动第二个)
这两件事都会建议两个单独的docker-compose.yml
文件。
在您有多个正在合作的服务的情况下,单个docker-compose.yml
文件可能有意义,因此在没有另一个的情况下启动一个文件是没有意义的。(例如,您有一个 REST API 服务,但它有一个关联的 Nginx 前端和一个专门的缓存服务,所有这些都结合在一起。)从一个 Docker Compose 设置调用到另一个设置有点棘手,并且在小规模下它可以有意义把紧密相连的东西放在一起。
在更大的范围内,拥有一个仅包含部署规范的单独存储库也是有意义的;这对于像 Kubernetes 这样的集群管理器来说更有意义,即使这样,无论是拥有一个仅包含部署数据的存储库,还是将部署设置与服务一起保留,这都是一种风格选择。
推荐阅读
- flutter - Flutter - WebRTC:不适用于 WIFI / 适用于移动数据
- javascript - 我的 Node.js/Express.js 项目中有一个公共文件夹,其中包含一些图像。当我尝试通过 URL 访问这些图像时,出现 404 错误
- c# - C# 错误 CS0117:“数组”不包含定义
- python - 如何摆脱我的散景图周围的这些额外文本(Flask Web 应用程序)
- mysql - 是否可以在 SQL 中为以下查询添加带有 SUM 和 GROUP BY 的 JOIN 查询?
- python - pytesseract 无法读取图像中的数字
- python - TypeError:在 Twitter 帐户活动 api 上没有字符串参数的编码
- reactjs - TypeError:React 中的数组未定义
- c - 将值分配给C中的指针后的分段错误
- sql - 如何将列中的结果分组在一起