Nano Hash - криптовалюты, майнинг, программирование

Перезапуск контейнеров при использовании Docker и Nginx proxy_pass

У меня есть контейнер докеров nginx и контейнер веб-приложений, которые успешно работают и общаются друг с другом.

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

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

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

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

--

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

Спасибо!

03.03.2015

  • Какую версию Докера вы используете? Обновляется ли содержимое /etc/hosts контейнера nginx после перезапуска контейнера веб-приложения? 03.03.2015

Ответы:


1

По этой причине я предпочитаю запускать прокси (nginx или haproxy) непосредственно на хосте.

Но вариант — «Связать через контейнер посла» https://docs.docker.com/articles/ambassador_pattern_linking/

https://www.digitalocean.com/community/tutorials/how-to-use-the-ambassador-pattern-to-dynamically-configure-services-on-coreos

03.03.2015

2

Если вы не хотите перезапускать свой прокси-контейнер всякий раз, когда вам нужно перезапустить один из прокси-контейнеров (например, fig ), вы можете взглянуть на подход к настройке автоматического обновления прокси: http://jasonwilder.com/blog/2014/03/25/automated-nginx-reverse-proxy-for-docker/

03.03.2015

3

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

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

10.02.2016
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..