Назад | Перейти на главную страницу

Докер рой - CentOS - nginx

Я запускаю docker swarm с текущими настройками

swarm.abc.com (скажем, 192.168.1.1) - главный node1.abc.com - дочерний node2.abc.com - дочерний

У меня есть контейнер, работающий в рое, работающем на порту 888. Если я подключусь к 192.168.1.1:888 - я могу получить к нему доступ - и это хорошо.

Еще у меня есть nginx на swarm.abc.com. в конфигурации nginx у меня есть

server {
    listen 80;
    server_name my.domain.com;

    location / {
        proxy_pass http://localhost:888; #which should redirect me to 192.168.1.1
    }
}

Однако когда я подключаюсь к my.domain.com У меня тайм-аут соединения. Любая помощь?

Ура

Сеть имеет пространство имен в докере, и частью этого пространства имен является устройство обратной связи, также известное как 127.0.0.1 или localhost. Это означает, что localhost внутри контейнера nginx указывает только на сеть контейнера nginx, а не на ваш внешний хост.

Для сети контейнер-контейнер разместите контейнеры в той же сети докеров, созданной пользователем (по умолчанию compose делает это за вас). Затем вы можете подключаться к другим контейнерам по их имени контейнера, идентификатору контейнера, имени службы или сетевому псевдониму. Итак, если ваше имя контейнера app-x, а внутри контейнера он прослушивает порт 999, и у вас есть 888:999 как ваш порт вперед, тогда конфигурация nginx будет выглядеть так:

proxy_pass http://app-x:999;

Обратите внимание, что нет необходимости публиковать или открывать порт из app-x, чтобы nginx мог достичь его через сеть контейнеров.