Как обновить реплицированную службу Docker
Я все еще изучаю Docker, и, к сожалению, после нескольких часов чтения документации и попыток применения различных подходов, я вынужден обратиться за помощью сюда.
У меня есть 3 Droplets на Digital Ocean - dev, staging и production. На них размещены приложение Django и база данных.
И dev, и staging имеют один контейнер, который является просто контейнером Python, и один контейнер MySQL.
Я обновляю их, извлекая изменения из репозитория Bitbucket, применяя миграции с помощью
docker exec -ti CONTAINER /bin/bash
и перезапускаю контейнер Python.
На производственном Droplet установлен реплицированный сервис, а образ взят из реестра контейнеров на Digital Ocean. Я извлекаю изменения из репозитория на Bitbucket, но поскольку я не могу просто перезапустить контейнер, изменения не отражаются на сайте.
Я пробовал docker stack deploy -c docker-compose.yml SERVICE --with-registry-auth
и docker service update --image IMAGE SERVICE
, но никакого эффекта.
Любая помощь будет оценена по достоинству. Спасибо
Я решил проблему, создав новый образ через Bitbucket. Затем docker stack deploy -c docker-compose.yml SERVICE --with-registry-auth
извлек новый образ из репозитория на Digital Ocean и отразил изменения на сайте.
Как вы уже говорили, это можно сделать с помощью docker CLI, но если вы новичок в docker, вам стоит попробовать https://www.portainer.io/, который поможет вам легче выполнять такие задачи. Также portainer добавляет еще один рычаг API к docker, что также приятно.