首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行多个码头组合

运行多个码头组合
EN

Stack Overflow用户
提问于 2017-05-13 19:35:05
回答 3查看 39.6K关注 0票数 50

我使用的应用程序运行在3种不同的对接图像上:

  • 第一个是使用REST调用的服务器HTTP
  • 第二个是狂犬病。
  • 第三个是工人

整个应用程序是用docker-compose up启动的。

非常简单:)

我希望使其可伸缩,并独立于其他应用程序运行整个应用程序的多个实例(3个坞映像),然后放置一个负载均衡器(如haproxy ),它将重定向到其中一个应用程序。

我看到我可以使用docker-compose up --scale blablabla,但是问题是我可以缩放容器,但是我真的想保持不同的“应用程序”的独立性。

例如,如果我想要3个版本的应用程序,我将有9个对接图像等。

我看到我们可以使用--privilege在坞内运行对接器(允许我在里面创建一个带有3个码头工人的码头),但我在堆栈溢出上读到这不是一个合适的解决方案。

你有解决办法吗?或者至少有一些文件要看。

我听说库伯内特斯可能是个解决方案,但我不确定。我(在堆栈上)读到:

如果您需要多个容器紧密绑定,您可能需要看看库伯内特斯,它在它们的“吊舱”内运行码头。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-14 19:11:45

听起来,您只需要您的撰写应用程序的3个不同的环境或“堆栈”独立运行。如果是这样的话,您可以使用--project-name-p选项docker-compose来处理这个问题。一个例子是这样的:

  • 启动应用程序版本1:docker-compose -p appv1 up -d
  • 启动应用程序版本2:docker-compose -p appv2 up -d
  • 启动应用程序第3版:docker-compose -p appv3 up -d

此时,您将有3组不同的容器正在运行,它们可以彼此独立地进行伸缩。Docker将将项目名称(通常从文件夹名称中推断)放在容器名称前面。您将得到容器名称,如appv1_worker_1appv2_worker_1appv3_worker1。如果您只扩展appv2员工服务(docker-compose -p appv2 scale worker=2),那么您将获得一个额外的appv2_worker_2

默认情况下,撰写总是创建一个默认网络,容器可以在其中交谈。在这种情况下,您将有3个独立的网络(appv1_defaultappv2_defaultappv3_default)。

如果下一步想要对每个项目名称运行不同的图像,可以在docker-compose.yml中使用环境变量插值。例如,可以为服务指定image: ${MYIMAGE},然后执行如下操作:

  • MYIMAGE=myorg/myapp:v1 docker-compose -p appv1 up -d
  • MYIMAGE=myorg/myapp:v2 docker-compose -p appv2 up -d

希望这是一个有用的想法,以做内码头撰写。

票数 99
EN

Stack Overflow用户

发布于 2019-02-05 12:23:45

如果要从单个命令一次运行多个停靠器-组合文件,请使用此方法。如果复合文件是docker -come1.yml和docker-come2.yml,则可以使用

码头-合成-f码头-复合1.yml -f码头-复合2.yml up

票数 14
EN

Stack Overflow用户

发布于 2022-01-28 10:00:17

您可以使用.env文件。在那里,您必须设置一个COMPOSE_FILE环境变量并将其设置为COMPOSE_FILE=a.yaml:b.yaml:c.yaml

现在您可以使用docker-compose up运行所有组合文件。

代码语言:javascript
复制
projekt/
    .env
    a.yaml
    b.yaml
    c.yaml
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43957259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档