Доступ к выводам контейнера gitlab docker отказано в подключении

#docker #docker-compose #gitlab #gitlab-ce

#docker #docker-compose #gitlab #gitlab-ce

Вопрос:

У меня есть контейнер docker, в котором выполняется эта конфигурация для образа gitlab-ce:

 version: "3"
services:
  gitlab:
   hostname: gitlab.mydomain.com
   image: gitlab/gitlab-ce:latest
   container_name: gitlab
   restart: always
   ports:
     - 3000:80
   volumes:
     - /opt/gitlab/config:/etc/gitlab
     - /opt/gitlab/logs:/var/log/gitlab
     - /opt/gitlab/data:/var/opt/gitlab
networks:
  default:
    external:
      name: custom_network
  

При запуске docker ps я вижу, что мой контейнер запущен с портом контейнера 80, сопоставленным с портом хост-машины 3000, как и предполагалось.

Хотя при запуске: wget -O- https://172.25.0.2:3000 я получаю это сообщение об ошибке: Connecting to 172.25.0.2:3000... failed: Connection refused.

Ответ №1:

При сопоставлении порта вы должны использовать IP-адреса хоста для доступа через сопоставленный порт.

Поэтому, если вам нужно получить доступ к порту 80 , используйте IP контейнера. Если вам нужно получить доступ к порту 3000 , используйте IP-адрес хоста или localhost самого основного хоста или даже если у вас есть частный интерфейс внутри вашего хоста.

Итак, эта команда: wget -O- https://172.25.0.2:3000 означает, что вы общаетесь с контейнером напрямую, а не через отображенный порт, и запрашиваете службу, прослушивающую порт 3000, что неверно, поэтому результатом будет отказ в соединении.

Комментарии:

1. Хорошо, я понял. Теперь я хочу использовать этот контейнер docker вместе с контейнером обратного прокси-сервера nginx. Они находятся в одной пользовательской сети. Эта ошибка все еще возникает.

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

3. Извините, я на самом деле обновлял комментарий. В моей конфигурации reverse_proxy, должен ли я сообщить об этом proxy_pass на localhost: 3000 ? (они находятся в одной сети)

4. Нет, любой контейнер должен подключаться к другому контейнеру, который находится внутри той же сети, с именем службы, которое в вашем случае будет gitlab , а порт будет 80, поэтому nginx обратится к http://gitlab:80