Docker compose 从docker compose开始排除服务

Docker compose 从docker compose开始排除服务,docker-compose,Docker Compose,用例 docker compose.yml定义了多个代表整个应用程序堆栈的服务。在开发模式中,我们希望动态排除某些服务,以便可以从IDE运行它们 从Docker compose 1.28开始,可以为服务分配配置文件,但据我所知,它只允许指定应启动哪些服务,而不允许排除哪些服务 我可以想象的另一种方式是将“可排除的”服务拆分为它们自己的docker compose.yml文件,但所有这些对我来说都有点乏味 您有更好的排除服务的方法吗?似乎我们都忽略了关于配置文件的一个非常重要的事情,那就是: 不带

用例

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

从Docker compose 1.28开始,可以为服务分配配置文件,但据我所知,它只允许指定应启动哪些服务,而不允许排除哪些服务

我可以想象的另一种方式是将“可排除的”服务拆分为它们自己的
docker compose.yml
文件,但所有这些对我来说都有点乏味


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

似乎我们都忽略了关于配置文件的一个非常重要的事情,那就是:

不带
profiles
属性的服务将始终处于启用状态

因此,如果您使用如下文件运行
docker compose up

版本:“3.9”
服务:
数据库:
图片:debian:buster
命令:echo数据库
前端:
图片:debian:buster
命令:echo frontend
配置文件:[“前端”]
后端:
图片:debian:buster
命令:echo后端
配置文件:[“后端”]
它将仅启动
数据库
容器。如果您使用
docker compose--profile backend up运行它,它将带来
数据库
后端
容器。要启动所需的一切,请
docker compose--profile backend--profile frontend up
或多次使用单个概要文件


在我看来,这似乎是让docker撰写而不是运行某些容器的最佳方法。你只需要用一个配置文件来标记它们就可以了。我建议你也给他第二次机会。除了一些很好的例子外,它还解释了该功能如何与服务依赖项交互。

我相信您列出了所有选项。你为什么不喜欢个人资料?您可以创建一个概要文件来启动容器而不排除容器,以及另一个概要文件来启动所有容器(我认为是“无概要文件”)。对我来说,这似乎比排除更灵活,虽然在您的情况下代码要多一些。也许我没有完全了解配置文件的概念,但假设我在
docker compose.yml
中有十个服务,其中一个称为
后端
,另一个称为
前端
。当想要开发
后端
服务时,我需要将
无后端
配置文件分配给
前端
服务,反之亦然?如果服务的数量增加了,那么这听起来像是很多冗长的配置文件名?