Всем привет коллеги.
Есть разные сервисы, например возьмем два service-a (php, nginx) и service-b
service-a
version: '3.5'
networks:
main:
driver: bridge
name: main
ipam:
driver: default
config:
- subnet: 172.26.13.0/24
services:
php-service-a:
build:
context: .
dockerfile: docker/php-extended/Dockerfile
args:
ssh_prv_key: ""
volumes:
- ./:/app
- "phpsocket:/var/run"
- ~/.ssh:/root/.ssh
networks:
- main
nginx-service-a:
build:
context: .
dockerfile: docker/nginx/Dockerfile
ports:
- "${NGINX_PORT}:80"
volumes:
- ./:/app
- "phpsocket:/var/run"
depends_on:
- php-service-a
networks:
- main
volumes:
phpsocket:
service-b
version: '3.5'
networks:
main:
external:
name: main
services:
service-b:
build:
context: .
dockerfile: docker/golang/local.Dockerfile
working_dir: /go/app
volumes:
- ./:/go/app
ports:
- "${GO_PORT}:8080"
environment:
- DB_USERNAME
- DB_PASSWORD
- DB_HOST
- DB_EXTERNAL_PORT
- DB_DB
networks:
- main
tty: true
Тут GO_PORT = 8027.
В первом сервисе мы создаем сеть main, во втором сервисе используем ее как внешнюю.
Запускаем все контейнеры. Заходим в контейнер сервиса А. Там выполняем запрос курлом на адрес service-b:8027 - пишет что хост не верный, тоже с запросом на localhost. Работает только запрос на host.docker.internal:8027. Объясните пожалуйста почему? Вроде по имени сервиса внутри контейнера должен работать запрос.
Снаружи все понятно, там только работает по localhost:8027, так как не прописан по умолчанию хост service-b. А вот почему ни по имени хоста, ни по localhost внутри контейнера не доступен сервис это странно. 127.0.0.1:8027 тоже пробовал внутри контейнера.