развертывание стека докеров не удаляет службы, которые не объявлены в текущем файле компоновки yaml

В настоящее время я использую Docker Swarm Mode в конвейере, и я массово использую docker stack deploy -c compose-file.yml name-of-the-stack в качестве команды для обновления стека с помощью последнего образа докера. Он отлично работает, если я не удалю службу из файла yaml. В этом случае команда stack deploy должна удалить больше не существующую службу поверх обновления образа другой, но поведение заключается в том, что она оставляет контейнер работающим, и это не ожидаемое поведение. Вследствие этого я изменил его на docker stack rm name-of-the-service, а затем на docker stack deploy -c compose-file.yml name-of-stack. Но у этого есть еще один ужасный побочный эффект, который случайным образом влияет на контейнеры: команды docker stack rm name-of-the-stack часто делают надежность прокси-пасса контейнера nginx совершенно ненадежной (похоже, это связано с этой проблемой https://github.com/docker/docker/Issues/24244). На самом деле, контейнер nginx (находящийся в другом стеке, но в той же оверлейной сети), который отвечает за обработку всех запросов между контейнерами и выполнение прокси-перехода между ними с использованием функции сетки маршрутизации режима Docker Swarm, после повторное создание развернутого стека не позволяет прокси-запросам, например, если он пытается перенаправить трафик в контейнеры, которые больше не существуют, и это приводит к сбою интеграции и поведенческих тестов. Есть ли способ последовательного развертывания без использования стека докеров rm (который пока кажется довольно глючным), но применяя последнее состояние файла компоновки yml?


person lzecca    schedule 28.02.2017    source источник


Ответы (1)


Вам нужно включить параметр --prune в команду docker stack deploy:

$ docker stack deploy --help

Usage:  docker stack deploy [OPTIONS] STACK

Deploy a new stack or update an existing stack

Aliases:
  deploy, up

Options:
      --bundle-file string    Path to a Distributed Application Bundle file
  -c, --compose-file string   Path to a Compose file
      --help                  Print usage
      --prune                 Prune services that are no longer referenced
      --with-registry-auth    Send registry authentication details to Swarm agents
person BMitch    schedule 05.06.2017