Docker组成:我应该有多个Docker合成文件吗?[关闭]

x7rlezfr  于 2023-01-25  发布在  Docker
关注(0)|答案(3)|浏览(130)
    • 已关闭**。此问题为opinion-based。当前不接受答案。
    • 想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。

4天前关闭。
Improve this question
目前,我在同一个docker-compose.yml文件中有大约20个容器,不是所有的容器都是相关的,但它是这样设置的,所以我只需运行一次docker-compose up就可以启动所有的容器。
我是否应该将其拆分为多个Docker-compose文件(例如,每个Docker-compose文件包含一个应用程序,其中可能包含多个容器,如前端+数据库)?将所有容器放在一个巨大的Docker-compose文件中是否有任何明显的缺点?

5sxhfpxr

5sxhfpxr1#

不是所有的容器都是相关的,但是它已经这样设置了,所以我可以只运行一次docker-composition
如果你保持所有的容器在一个docker-compose.yml文件中为了这个需要,那么最好去一个项目每个docker-compose文件而不是创建所有的容器。因为你也可以一次启动多个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合成文件一个项目,因为

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

最后,当验证合成文件时,由于没有正确的行指示,因此当存在错误时,配置错误将仅传播到单个项目,而不会影响所有其他项目。

lf3rwulv

lf3rwulv2#

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

bbuxkriu

bbuxkriu3#

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

相关问题