docker-compose разрешить имя хоста в URL - PullRequest
0 голосов
/ 21 марта 2019

Попытался осмотреться, но не смог найти ничего похожего на то, что мне нужно.

У меня есть файл docker-compose с док-контейнером (web), который использует IP другого контейнера (api)в переменной окружения путем разрешения имени хоста:

version: '3'
services:
  web:
    build: ../client/
    ports:
      - "5000:5000"
      - "3000:3000"
    environment:
      REACT_APP_API_DEV: http://api:8000/server/graphql
  api:
    build: ../server/
    env_file:
      - server_variables.env
    ports:
      - "8000:8000"
  redis:
    image: "redis:alpine"

Моя проблема заключается в том, что web не разрешает эту переменную во время работы.Я могу нормально пропинговать api внутри контейнера web, но http://api:8000 не разрешается должным образом.Я также попытался сделать HOST = api переменной и создать URI вручную, но это тоже не работает.

РЕДАКТИРОВАТЬ: я добавил полный файл docker-compose.yml для справки.Я могу curl api просто отлично изнутри контейнера web, но мое приложение не может решить его должным образом.Я использую NodeJS и React

Ответы [ 2 ]

1 голос
/ 21 марта 2019

Вы должны связать их, используя network

version: '3'
services:
  web:
    ...
    environment:
      - HOST: http://api:8000
    networks:
      - my-network
    ...
  api:
    networks:
      - my-network
    ...

networks:
  my-network:
0 голосов
/ 21 марта 2019

Хорошо, я нашел проблему. Очевидно, мой web контейнер извлекался из api с http://api:8000 URI, но мой браузер не знает, что такое api (это делают только контейнеры).

Я следовал советам, предложенным в здесь , чтобы определить имя хоста на моей машине, и это сработало.

...