我发现自己想暂时禁用docker-compose
文件中的服务。
当然,我可以将其注释掉,但是是否可以只说“ enabled: false
”呢?
我发现自己想暂时禁用docker-compose
文件中的服务。
当然,我可以将其注释掉,但是是否可以只说“ enabled: false
”呢?
Answers:
您可以简单地重新定义entrypoint
或command
,以用什么都不做的东西代替所说的命令(/bin/true
)
那将使容器立即退出,什么也不做。
shadi在评论中添加了以下提示:
如果您根本不想构建服务,请重新定义构建密钥以指向
Dockerfile
仅具有以下内容的:
FROM tianon/true
ENTRYPOINT ["/true"]
5andr0指出评价的顶层部分x-disabled:
(扩展域样)
更加方便:将禁用的服务移至顶级部分,
x-disabled:
而不是services:
具有
x-
前缀的节将被解析,但是如果不按预期方式用作扩展字段,则将忽略这些节。
restart: "no"
以避免无限重启
x-disabled:
而不是services:
您可以在docker-compose.override.yaml
文件中进行操作。
该文件自动被读取docker-compose
并合并到main中docker-compose.yaml
。
如果您将其从Git中排除,则每个开发人员都可以调整配置(有一些限制),而无需更改原始配置docker-compose.yaml
。
因此,foo
可以通过在docker-compose.override.yaml
以下位置重新定义其入口点来临时禁用服务:
version: "3"
services:
foo:
entrypoint: ["echo", "Service foo disabled"]
export XXX_ENTRYPOINT=/bin/true
然后`入口点:[“ $ {XXX_ENTRYPOINT:-docker-entrypoint.sh}”“]
我将以下额外的行添加到我要暂时禁用的服务中:
command: echo "{put your service name here} disabled"
无论如何它都会启动,但是什么也没做。
command
不会对入口点产生影响。在你的榜样,你靠的entrypoint
是bash
我猜。为了使它具有弹性((独立于内置entrypoint
),我认为您需要重新定义入口点,而不是命令
无法禁用Docker compose yaml文件中定义的服务。VonC的建议是一个很好的解决方法,请参阅下面的docker compose文档以获取可用选项 https://docs.docker.com/compose/compose-file/
docker-compose up
,它将默认启动所有服务。但是,如果运行docker-compose up myservice
它,将启动myservice及其相关的东西。通过设置依赖项,您可以使依赖项从此命令开始。您也docker-compose run
可以获取所需的服务。正确的选择可能是将其拆分为多个撰写文件,以提供所需的灵活性。