我应该有多个docker-compose文件吗?[关闭]

sycxhyv7  于 2023-05-22  发布在  Docker
关注(0)|答案(3)|浏览(169)

已关闭,此问题为opinion-based。目前不接受答复。
**想改善这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。

4个月前关闭。
社区在4天前审查了是否重新打开此问题,并将其关闭:
原始关闭原因未解决
Improve this question
目前,我在同一个docker-compose.yml文件中有大约20个容器。并不是所有的容器都是相关的,但是它已经这样设置了,所以我可以只运行一次docker-compose up来启动所有的容器。
我应该把它分解成多个docker-compose文件(例如每个docker-compose文件一个应用程序,其中可以包括多个容器,如前端+数据库)?将所有容器放在一个巨大的docker-compose文件中有什么明显的缺点吗?

svgewumm

svgewumm1#

并不是所有的容器都是相关的,但它已经这样设置了,所以我可以只运行一次docker-compose up
如果你为了这个需要而将所有容器保存在一个docker-compose.yml文件中,那么最好是每个docker-compose文件一个项目,而不是创建所有容器。因为你可以一次启动多个合成文件。
如果你想启动所有的容器,那么只需要通过

docker-compose -f docker-compose.projecta.yml -f docker-compose.projectb.yml  up

或为单个项目

docker-compose -f docker-compose.projecta.yml

您还可以探索扩展选项
Share Compose configurations between files and projects
我会选择每个docker-compose文件一个项目因为

  • 它不会产生不必要的容器
  • 它将避免端口冲突(如果两个共享同一个端口)
  • 将保存计算成本
  • 减少创建docker-compose堆栈的时间
  • 更易于管理

最后,当验证组合文件时,由于没有适当的行指示,当出现错误时,配置错误只会传播到单个项目,不会影响所有其他项目。

lymnna71

lymnna712#

实际上,我在目前的项目中遇到了非常类似的挑战。这让我想到了写一个小脚本的想法,我称之为docker-compose-profile(或简称:dcp)。我昨天在GitLab上以docker-compose-profile发布了这个。简而言之:我现在可以使用像dcp -p some-services "up -d"这样的命令启动几个预定义的docker-compose配置文件。配置文件可能包含docker.compose.yml中所有已定义服务的子集。有了这种机制,就可以很容易地启动在dcp.yml中单独定义的几组服务。请随意尝试,并给予一些反馈或建议,以进一步改进。
回答你的问题。。如果所有服务都属于同一个项目,则可以将它们保存在一个文件中。如果没有,则将其拆分为单独的docker-compose.yml文件。

disho6za

disho6za3#

管理多个docker-compose文件的另一个想法是扩展docker-compose功能以控制多个docker-compose.yml配置。
我在github上写了一个脚本:https://github.com/valerebron/pegaz

相关问题