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