Я оказался в ситуации, когда хочу временно отключить службу в docker-compose
файле.
Конечно, я мог бы это прокомментировать, но есть ли возможность просто сказать " enabled: false
"?
docker
docker-compose
Мандрагор
источник
источник
docker-compose up
он запустит все службы по умолчанию. Однако, если вы запустите,docker-compose up myservice
он запустит мою службу и все, что от нее зависит. Настроив зависимости, вы можете сделать так, чтобы плохая служба не запускалась с помощью этой команды. Вы такжеdocker-compose run
можете получить только те услуги, которые вам нужны. Правильный выбор также может заключаться в том, чтобы разбить его на несколько файлов для создания файлов, чтобы обеспечить необходимую гибкость.--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
)Это заставит контейнер немедленно выйти, ничего не делая.
Шади добавляет в комментарии следующие советы:
5andr0 указывает в комментариях на раздел верхнего уровня
x-disabled:
(расширение, подобное полю)источник
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
:источник
export XXX_ENTRYPOINT=/bin/true
then `entrypoint: [" $ {XXX_ENTRYPOINT: -docker-entrypoint.sh} "]`Я добавляю в службу, которую хочу временно отключить, следующую дополнительную строку:
Он все равно запускается, но ничего не делает.
источник
command
не влияет на точку входа. В вашем примере вы полагаетесь , чтоentrypoint
этоbash
я думаю. Чтобы сделать это устойчивым ((независимо от встроенногоentrypoint
), я думаю, вам нужно переопределить точку входа, а не команду.Невозможно отключить службу, определенную в файле Docker compose yaml. Предложение VonC - хороший обходной путь. Пожалуйста, смотрите ниже документацию по созданию докеров для доступных опций https://docs.docker.com/compose/compose-file/
источник
Я бы масштабировал службу до 0 реплик с помощью: deploy: replicas: 0
К сожалению, как указано в документации, это работает только с docker swarm.
источник
Я понял:
источник
Примитивно, но добавьте
#
в начало каждой строки службы.источник