Я оказался в ситуации, когда хочу временно отключить службу в docker-composeфайле.
Конечно, я мог бы это прокомментировать, но есть ли возможность просто сказать " enabled: false"?
Я оказался в ситуации, когда хочу временно отключить службу в docker-composeфайле.
Конечно, я мог бы это прокомментировать, но есть ли возможность просто сказать " enabled: false"?
--no-depsесли вы не хотите запускать зависимости. Я знаю, что это не то, что вы ищете, а наоборот.
docker-compose -f docker-compose.yml -f another-docker-compose.yml up -d. Вы можете проверить результирующее слияние docker compose с помощью команды config :docker-compose -f docker-compose.yml -f another-docker-compose.yml config
Ответы:
Вы можете просто переопределить entrypointилиcommand , чтобы заменить указанную команду чем-то, что ничего не делает ( /bin/true)
Это заставит контейнер немедленно выйти, ничего не делая.
Шади добавляет в комментарии следующие советы:
Если вы не хотите, чтобы служба собиралась вообще, переопределите ключ сборки, чтобы он указывал на то,
Dockerfileчто имеет только:
FROM tianon/true
ENTRYPOINT ["/true"]
5andr0 указывает в комментариях на раздел верхнего уровняx-disabled: (расширение, подобное полю)
Намного удобнее: перемещать отключенные службы в раздел верхнего уровня
x-disabled:вместоservices:Разделы с
x-префиксом будут проанализированы, но игнорироваться, если не используются по назначению в качестве поля расширения.
restart: "no"чтобы избежать бесконечных перезапусков
x-disabled:вместоservices:
Вы можете сделать это в docker-compose.override.yamlфайле.
Этот файл автоматически считывается docker-composeи объединяется с основным docker-compose.yaml.
Если он исключен из Git, каждый разработчик может настроить конфигурацию (с некоторыми ограничениями), не изменяя исходную docker-compose.yaml.
Таким образом, сервис fooможно отключить ad-hoc, переопределив его точку входа в docker-compose.override.yaml:
version: "3"
services:
foo:
entrypoint: ["echo", "Service foo disabled"]
export XXX_ENTRYPOINT=/bin/true then `entrypoint: [" $ {XXX_ENTRYPOINT: -docker-entrypoint.sh} "]`
Я добавляю в службу, которую хочу временно отключить, следующую дополнительную строку:
command: echo "{put your service name here} disabled"
Он все равно запускается, но ничего не делает.
commandне влияет на точку входа. В вашем примере вы полагаетесь , что entrypointэто bashя думаю. Чтобы сделать это устойчивым ((независимо от встроенного entrypoint), я думаю, вам нужно переопределить точку входа, а не команду.
Невозможно отключить службу, определенную в файле Docker compose yaml. Предложение VonC - хороший обходной путь. Пожалуйста, смотрите ниже документацию по созданию докеров для доступных опций https://docs.docker.com/compose/compose-file/
Я бы масштабировал службу до 0 реплик с помощью: deploy: replicas: 0
К сожалению, как указано в документации, это работает только с docker swarm.
Я понял:
docker-compose up $(yq -r '.services | keys | join(" ")' docker-compose.yml | sed 's/service-name//')
Примитивно, но добавьте #в начало каждой строки службы.
docker-compose upон запустит все службы по умолчанию. Однако, если вы запустите,docker-compose up myserviceон запустит мою службу и все, что от нее зависит. Настроив зависимости, вы можете сделать так, чтобы плохая служба не запускалась с помощью этой команды. Вы такжеdocker-compose runможете получить только те услуги, которые вам нужны. Правильный выбор также может заключаться в том, чтобы разбить его на несколько файлов для создания файлов, чтобы обеспечить необходимую гибкость.