Чтение в Интернете для правильной сетевой конфигурации для Active Directory Internal и DNS1, services: web: image: registry.gitlab.com/xxxx/xxxx:latest deploy: replicas: 2 ...
Я следую руководству Docker и делаю это в своей собственной версии
version: "3.1"
services:
web:
image: registry.gitlab.com/xxxx/xxxx:latest
deploy:
replicas: 2
ports:
- "8888:80"
mysql:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_USER: user
MYSQL_PASS: password
ports:
- "8889:3306"
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
Каждый раз, когда я меняю какой-то код, Я перестраиваю новый образ докера и запускаю обновление.
docker stack deploy --compose-file docker-compose.yml xxxx-learn
Потом я заметил некоторое время простоя. Они будут запускать новый контейнер по одному и останавливать старый контейнер по одному. Тогда проблема в том, что загрузка нового образа занимает несколько минут, а для запуска веб-сервера требуется время.
Одно из решений, о котором я подумал, - это запустить балансировку нагрузки Nginx перед этими двумя репликами веб-сервера. Но есть ли лучшее решение?
Вы должны поместить политику перезапуска и stop_grace_period в свой файл создания:
version: "3.1"
services:
web:
stop_grace_period: 10s
deploy:
replicas: 2
restart_policy:
condition: on-failure
Затем я заметил некоторое время простоя. Они будут запускать новый контейнер по одному и останавливать старый контейнер по одному. Тогда проблема в том, что для загрузки нового образа требуется несколько минут, а для запуска веб-сервера требуется время.
Вам необходимо определить проверку работоспособности для вашего образа / контейнера. Без этого докер не знает, когда ваше приложение готово обслуживать запросы, и будет отправлять запросы в «еще не готовый» контейнер и отключать оставшийся работающий контейнер вскоре после замены первого.
Проверка работоспособности определяет команда для запуска внутри вашего контейнера, чтобы определить, работает ли ваше приложение. См. эту документацию , чтобы узнать, как настроить проверку работоспособности внутри вашего образа.