#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