从 docker-compose 开始排除服务

Rob*_*uch 4 docker-compose

使用案例

docker-compose.yml定义了代表完整应用程序堆栈的多个服务。在开发模式下,我们希望动态排除某些服务,以便我们可以从 IDE 运行它们。

从 Docker compose 1.28 开始,可以将配置文件分配给此处记录的服务,但据我所知,它只允许指定应启动哪些服务,而不是应排除哪些服务。

我可以想象的另一种方法是将“排他性”服务分成自己的docker-compose.yml文件,但所有这些对我来说似乎有点乏味。

您有更好的方法来排除服务吗?

ane*_*yte 10

看来我们都忽略了关于个人资料的一个非常重要的事情,那就是:

没有profiles属性的服务将始终启用

因此,如果您docker-compose up使用这样的文件运行:

version: "3.9"
services:
  database:
    image: debian:buster
    command: echo database

  frontend:
    image: debian:buster
    command: echo frontend
    profiles: ['frontend']

  backend:
    image: debian:buster
    command: echo backend
    profiles: ['backend']
Run Code Online (Sandbox Code Playgroud)

它只会启动database容器。如果你运行它,docker-compose --profile backend up它将带来databasebackend容器。要启动您需要的所有内容docker-compose --profile backend --profile frontend up,或多次使用单个配置文件。

在我看来,这是不运行某些容器的最佳方法docker-compose。您只需用配置文件标记它们即可。我建议您也给个人资料参考第二次机会。除了一些很好的示例之外,它还解释了该功能如何与服务依赖项交互。