Я оказался в ситуации, когда хочу временно отключить службу в 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
можете получить только те услуги, которые вам нужны. Правильный выбор также может заключаться в том, чтобы разбить его на несколько файлов для создания файлов, чтобы обеспечить необходимую гибкость.