Получить адрес хоста других контейнеров

У меня есть конкретная проблема, связанная с созданием 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.

0 ответов

Другие вопросы по тегам