我发现自己处于这种情况,我想暂时禁用docker-compose
文件中的服务。
当然我可以发表评论,但是有没有选择只能说" enabled: false
" ?
答案 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//')