根据条件启动一个docker容器

Sha*_*k G 6 docker docker-compose

问题-

我有一个带有 6 个服务的 docker-compose.yml。当我执行 docker-compose up 时,所有 6 个容器都会启动,但我需要 2 个容器来开始其工作,并根据条件休息 4 个容器。

描述-

组合中的 6 个服务(所有用户的 2 个服务和 2 个用户的 4 个服务):-

-2 为所有用户提供服务

  • 我正在第一个容器中安装登录所需的页面

  • 我在第二个容器中维护了登录帐户的数据库

每个用户 -2 个服务

  • 根据用户,我从登录页面重定向到不同的应用程序
  • 此时,我将他/她的应用程序安装在一个容器中,并将数据库安装在另一个容器中。

有没有办法,当我运行 docker-compose up 时,它应该只启动所有用户共有的 2 个服务,并且根据用户登录,我需要启动其他 2 个安装了他/她的应用程序的服务???

Cha*_*esB 9

现在可以通过最近添加的 docker-compose、compose 配置文件来巧妙地解决这个问题(至少对于服务部分,不确定卷)。请参阅此处的文档


Dev*_*Dan 6

仅基于用户执行此操作将需要 Docker Compose 之外的逻辑,但您可能能够配置 .

扩展服务

您或许可以使用两个 Docker Compose 文件来完成类似的结果。

  • 为所有用户提供 2 项服务 - docker-compose.yml
  • 2 个用户的 4 个服务 - docker-compose.admin.yml

Indocker-compose.admin.yml补充覆盖原始撰写文件中的设置,以及其他容器。您可以使用覆盖来更改任何内容,包括发送到容器的 ENV 变量或卷。

当运行docker-compose up这两个服务时,所有用户都会启动。

您可以通过运行运行所有六个容器

docker-compose -f docker-compose.yml -f docker-compose.admin.yml up
Run Code Online (Sandbox Code Playgroud)

别名

在您的别名中设置别名.bashrc将使日常使用更容易。

# For regular users
alias comp="docker-compose"

# For two special users
alias comp="docker-compose -f docker-compose.yml -f docker-compose.admin.yml"
Run Code Online (Sandbox Code Playgroud)

通过此设置,所有用户都可以使用comp upcomp down获取适当的容器集。

文档

请参阅 Docker 文档中的详细信息:

在 Compose 中扩展服务