#docker #docker-compose #docker-networking
#docker #docker-составить #docker-сеть
Вопрос:
Я не могу отправить http-запрос из контейнера другому
Я уже пытаюсь создать сеть, но это не помогло
version: '2'
services:
backend:
container_name: backend
image: registry.gitlab.com/myproject/backend:latest
restart: always
ports:
- 10083:3000
networks:
- dpnet
widget-ws:
container_name: widget-ws
image: registry.gitlab.com/myproject/widget-ws:latest
restart: always
ports:
- 10084:3001
networks:
- dpnet
networks:
dpnet:
driver: bridge
Вместо URL-адреса я использую имя_контейнера
http://widget-ws:10084
но получил ошибку
connect ECONNREFUSED 172.21.0.2:10084
Ответ №1:
Используйте URL: http://widget-ws:3001
Контейнеры взаимодействуют друг с другом по внутренним портам, не тем, которые сопоставлены с вашим хостом.
Нет необходимости создавать сеть.
Ответ №2:
Кажется, вы смешиваете внутренние IP-адреса с портами, которые вы открыли для хоста. Замените http://widget-ws:10084
на http://widget-ws:3001
, и ваши соединения должны работать.
Комментарии:
1. Но могу ли я использовать внешний порт без создания сети?
Ответ №3:
Тип сети, используемой контейнером, будь то мост, оверлей, сеть macvlan или пользовательский сетевой плагин, прозрачен изнутри контейнера. Поэтому используйте порт контейнера вместо использования внешнего привязанного порта.
http://widget-ws:3001