有没有办法在docker-compose.yml中禁用服务

时间:2016-05-16 13:16:27

标签: docker docker-compose

我发现自己处于这种情况,我想暂时禁用docker-compose文件中的服务。

当然我可以发表评论,但是有没有选择只能说" enabled: false" ?

8 个答案:

答案 0 :(得分:61)

自 2021 年 1 月起,有一种方法可以优雅地禁用 docker-compose.yml 中的服务或选择性地运行某些服务而不是其他服务。 Docker Compose 1.28.0 引入了对 profiles 键的支持。现在我们可以这样做:

version: "3.9"
services:
  base_image:
    ...
    profiles:
      - donotstart

文档中的示例描述了如何使用此密钥创建基于命令行上的 --profile 选项一起运行的容器组。在此处查看页面:https://docs.docker.com/compose/profiles/

答案 1 :(得分:26)

你可以简单地重新定义entrypoint or command,以便用不起作用的东西替换所述命令(/bin/true

这会使容器立即退出,什么都不做。

shadi在评论中添加了以下提示:

  

如果您根本不想构建服务,请重新定义构建密钥以指向仅具有以下内容的Dockerfile

FROM tianon/true 
ENTRYPOINT ["/true"]

答案 2 :(得分:7)

您可以在docker-compose.override.yaml文件中进行操作。

docker-compose自动读取此文件,并将其合并到主docker-compose.yaml中。

如果您将其排除在Git之外,则每个开发人员都可以调整配置(有一些限制),而无需更改原始的docker-compose.yaml

因此,可以通过在foo中重新定义其入口点来临时禁用服务docker-compose.override.yaml

version: "3"

services:
  foo:
    entrypoint: ["echo", "Service foo disabled"]

答案 3 :(得分:6)

我将以下额外行添加到我想暂时禁用的服务中:

> node-expat@2.3.16 install 
/var/lib/jenkins/jobs/tryout/workspace/myproject/node_modules/node-expat
> node-gyp rebuild

make ✖ ERR  Missing Makefile / Bakefile 
make ℹ info Run "make init" to generate a Makefile.

无论如何它都会开始,但什么都不做。

答案 4 :(得分:1)

无法禁用Docker compose yaml文件中定义的服务。 VonC的建议是一个很好的解决方法 有关可用选项,请参阅下面的docker撰写文档 https://docs.docker.com/compose/compose-file/

答案 5 :(得分:1)

我会将服务扩展为0个副本: 部署:       复制品:0

不幸的是,documentation states这只适用于docker swarm。

答案 6 :(得分:0)

原始的,但是在服务的每一行的开头添加一个#

答案 7 :(得分:-2)

我明白了:

docker-compose up $(yq -r '.services | keys | join(" ")' docker-compose.yml | sed 's/service-name//')