2017-01-29 3 views
0

Моего приложения имеет три контейнера: Db, интерфейс-Web (React), бэкенд-апите Как я могу получить мой бэкенд-апите адрес в фронтэнде-сетяхКак получать доступ к связанной Docker контейнера с реагировать

Вот мой файл Compose

version: '2' 
services: 
    db: 
    image: postgres 
    ports: 
    - "5432:5432" 

    web: 
    build: . 
    stdin_open: true 
    volumes: 
     - .:/usr/src/app 
    ports: 
     - "3000:3000" 
    environment: 
     - API_URL=http://api:8080/ 
    links: 
     - api 
    depends_on: 
     - api 

    api: 
    build: ./api 
    stdin_open: true 
    volumes: 
     - ./api:/usr/src/app 
    ports: 
     - "8080:3000" 
    links: 
     - db 
    depends_on: 
     - db 

Я не могу получить адрес и апи и process.env.API_URL

+0

Дайте апи контейнер имя и это имя будет автоматически разрешимый в вашем веб-докере. Поэтому, если вы назовете его «myapp-api», тогда http: // myapp-api будет доступен в веб-контейнере. – cen

ответ

0

Добавьте имя контейнера в описании сервиса следующим образом:

api: 
    build: ./api 
    container_name: api 
    stdin_open: true 
    volumes: 
     - ./api:/usr/src/app 
    ports: 
     - "8080:3000" 
    links: 
     - db 
    depends_on: 
     - db 

Затем вы можете использовать имя контейнера в качестве имени хоста для подключения. См. https://docs.docker.com/compose/compose-file/#/containername

0

Я признаю, что ваш сервер в контейнере web просто предоставляет статические htmls и не работает как прокси-сервер для контейнерного сервера api.

Итак, как только вы сопоставили порты с главной машиной, вы можете использовать имя хоста/ip для поиска сервера api.

Если имя хоста машины app.myserver.dev, в вашем API_URL окр вара вы можете использовать ниже конфигурацию и докеры будут делать работу за вас:

 
    web: 
    build: . 
    stdin_open: true 
    volumes: 
     - .:/usr/src/app 
    ports: 
     - "3000:3000" 
    environment: 
     - API_URL=http://app.myserver.dev:8080/ 
    links: 
     - api 
    depends_on: 
     - api 
Смежные вопросы