Назад | Перейти на главную страницу

Как мне работать с тегами для развертывания стека докеров?

У меня есть файл docker compose (3), который я делаю docker stack deploy на. Я делаю это в конвейере Jenkins.

То, как я работаю с тегами, заключается в том, что я устанавливаю переменную среды API_TAG и (соответствующая часть) соответствующий файл компоновки докеров выглядит следующим образом.

version: '3'

services:
  api:
    image: registry:5000/api:${API_TAG}

Как мне работать с тегами для других служб в этом файле сборки стека / докера, который я не просто создал? Конвейер, с которым я работаю, строит только приложение api, а не три базы данных, от которых оно зависит. Однако в этих базах данных также есть определенные теги (не только latest). Мне действительно нужно запрашивать у кластера роя текущие службы и теги для этой базы данных, чтобы docker stack deploy ничего не портит?

В идеале ваш файл компоновки стека должен содержать все сервисы, которые вы выполняете как контейнеры для этого приложения, так что да, если у вас есть контейнер базы данных, который необходимо включить, он должен быть в файле компоновки, и вы управляете версией / тегом, запущенным в этом приложении. составить файл.

Идея здесь в том, что вы можете создать файл композиции (или создать файл и переопределить файл) которые работают с docker-compose up для местного развития, и docker stack deploy для развертывания роя.

Альтернативный, но более сложный способ ИМО - запускать другие службы в их файле compose / stack и использовать созданные вручную оверлейные сети, чтобы гарантировать, что все они находятся в одних и тех же виртуальных сетях докеров.