Получить адрес хоста других контейнеров
У меня есть конкретная проблема, связанная с созданием Docker. В настоящее время я использую версию docker compose: 3.8.
У меня есть шлюз, построенный в nodejs. Мне нужно получить адрес контейнера другого приложения, доступного в шлюзе, в качестве переменной среды. Я просмотрел различные документы, но ни один из них не работает.
version: "3.8"
services:
user_service:
build:
context: ./user-service
environment:
NODE_PORT: 4000
authentication_service:
build:
context: ./authentication_service
environment:
NODE_PORT: 3001
gateway:
build: ./public-gateway
environment:
- NODE_PORT=2000
- USER_SERVICE=user_service
depends_on:
- user_service
- authentication_service
links:
- user_service:user_service
restart: always
Выше находится файл компоновки докера. Но в коде шлюза я не могу получить адрес хоста USER_SERVICE. Я также читал, что ссылки устарели в версии 3.8, а адрес хоста автоматически доступен во всех приложениях в той же сети.
Я напечатал process.env в приложении nodejs, но все, что я вижу, это USER_SERVICE: user_service
Я был бы очень признателен, если бы кто-то мог направить меня в правильном направлении.
Я хотел бы видеть адрес хоста USER_SERVICE, когда я печатаю process.env.USER_SERVICE в приложении nodejs
Обновленный файл компоновки докеров, который работает
version: "3.8"
services:
user_service:
build:
context: ./user-service
environment:
NODE_PORT: 4000
authentication_service:
build:
context: ./authentication_service
environment:
NODE_PORT: 3001
gateway:
build: ./public-gateway
environment:
- NODE_PORT=2000
- USER_SERVICE=http://user_service:4000/user/service
depends_on:
- user_service
- authentication_service
restart: always
Примечание. Во время работы докера USER_SERVICE=http:// user_service :4000/user/service user_service будет заменен IP-адресом. Даже если вы напечатаете переменную среды [USER_SERVICE], она покажет http://user_service:4000/user/service. user_service Это будет разрешено DNS.