2015-03-03 3 views
1

У меня есть доккер-контейнер nginx и контейнер webapp успешно работает и разговаривает с каждым.Перезагрузка контейнеров при использовании Docker и Nginx proxy_pass

Контейнер nginx прослушивает порт 80 и использует proxy_pass для прямого трафика на IP-адрес контейнера webapp.

upstream app_humansio { server humansio:8080 max_fails=3 fail_timeout=30s; }

"humansio" установлен в /etc/hosts файл по грузчиком, потому что я начал Nginx с --link humansio:humansio. Контейнер webapp (peopleio) всегда подвергается воздействию 8080.

Проблема в том, что при перезагрузке контейнера webapp связь с контейнером nginx ломается, и мне также необходимо перезапустить это. Есть ли способ сделать это по-другому, поэтому мне не нужно перезапускать контейнер nginx, когда контейнер webapp перезагружается?

-

Я пытался сделать что-то вроде соединив их вручную, используя общий порт (8001 на обоих), но так как они на самом деле Оставляем этот порт, то второй контейнер не может использовать его.

Спасибо!

+1

Какую версию Docker вы используете? Обновляется ли содержимое «/ etc/hosts» nginx-контейнера после перезагрузки вашего контейнера webapp? –

ответ

0

если и использовать некоторые современные версии докер ссылки в Nginx контейнер на ваш веб-службу, вероятно, получите обновленную (и можно проверить это с docker exec -ti nginx bash - then cat/etc/hosts) - проблема в том, что nginx не использует/etc/hosts каждый раз - он кэширует ip, а когда он меняется - он теряется. «docker kill -s HUP nginx», который заставляет перезагрузить nginx свою конфигурацию без перезагрузки.

У меня такая же проблема. Раньше я запускал свои сервисы с помощью системных файлов systemd - и когда вы делаете одну услугу (nginx) зависимой от другой (webapp), а затем перезапускаете webapp - systemd достаточно умен, чтобы перезапустить nginx. Теперь я пытаюсь удачи с компоновкой docker и перезапуском контейнера webapp смущает nginx.

Смежные вопросы