我发现自己在这种情况下,我想禁用一个服务暂时在 docker-compose文件。
docker-compose
我当然可以把它注释掉,但是有没有选择只说“ enabled: false”呢?
enabled: false
您可以简单地重新定义 ABC0或 command,以便用什么也不做的东西(/bin/true)替换上述命令
command
/bin/true
这会使集装箱立即出口,什么都不做。
Shadi 在评论中添加了以下提示:
如果您根本不希望构建服务,那么重新定义构建键,使其指向一个 Dockerfile,该 Dockerfile只包含:
Dockerfile
FROM tianon/true ENTRYPOINT ["/true"]
5andr0 指出 在评论中是 顶层段 x-disabled:(类似于扩展字段)
x-disabled:
更方便的方法是: 将禁用的服务移动到顶级部分 x-disabled:而不是 services: 带有 x-前缀的节将被解析,但是如果没有按照预期的方式作为扩展字段使用,则将忽略这些节。
更方便的方法是: 将禁用的服务移动到顶级部分 x-disabled:而不是 services:
services:
带有 x-前缀的节将被解析,但是如果没有按照预期的方式作为扩展字段使用,则将忽略这些节。
x-
无法禁用在 Docker 撰写 yaml 文件中定义的服务。 VonC 的建议是一个很好的解决方案 请参阅下面的 Docker 撰写文档,了解可用的选项 Https://docs.docker.com/compose/compose-file/
我添加了以下额外的行到我想暂时禁用的服务:
command: echo "{put your service name here} disabled"
无论如何都会开始,但是什么都没有。
我会将服务扩展到0个副本:
deploy: replicas: 0
不幸的是,作为 文件说明这个 只对 Docker Swarm 有效。
您可以在 docker-compose.override.yaml文件中执行此操作。
docker-compose.override.yaml
此文件由 docker-compose自动读取并合并到主 docker-compose.yaml中。
docker-compose.yaml
如果您将它排除在 Git 之外,那么每个开发人员都可以在不更改原始 docker-compose.yaml的情况下调整配置(带有一些限制)。
因此,可以通过在 docker-compose.override.yaml中重新定义其入口点来临时禁用服务 foo:
foo
version: "3" services: foo: entrypoint: ["echo", "Service foo disabled"]
原语,但是在服务的每一行的开头添加一个 #。
#
我知道了:
docker-compose up $(yq -r '.services | keys | join(" ")' docker-compose.yml | sed 's/service-name//')
截至2021年1月,有一种方法可以优雅地禁用 docker-compose.yml中的某个服务,或者选择性地运行某些服务而不运行其他服务。Docker Compose 1.28.0引入了对 profiles密钥的支持。现在我们可以这样做:
docker-compose.yml
profiles
version: "3.9" services: base_image: ... profiles: - donotstart
文档中的示例描述了如何使用此键创建基于命令行上的 --profile选项一起运行的容器组。点击这里查看页面: https://docs.docker.com/compose/profiles/
--profile
更新
对配置文件的支持在 编写 V2β5(docker compose)中正常工作。2021-07-08发布的 Docker 桌面3.5.2中包含了 ComposV2β6。
docker compose
services: dev_service: ... profiles: ["dev"] # only runs with dev profile
docker compose --profile dev up
档号: https://docs.docker.com/compose/profiles/