как я могу общаться между контейнерами? - PullRequest
0 голосов
/ 18 ноября 2018

Я использую контейнер со шлюзом API в порту 80, и мне нужно связать шлюз API между другими контейнерами (все эти с использованием dockerfile и docker-compose). Как я могу сделать так, чтобы эти другие участники не открывали порт локальному хосту, а общались внутри со шлюзом API?

Мой docker-compose:

version: '3'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ./:/usr/src/app
      - /usr/src/app/node_modules
    ports:
      - "3000:3000"

Решение:

Изменен файл docker-compose для:

version: '3.5'

    services:
      app:
        build:
          context: .
          dockerfile: Dockerfile
        volumes:
          - ./:/usr/src/app
          - /usr/src/app/node_modules
        expose:
          - "3000"
        image: api-name-service
        container_name: api-name-service
        networks: 
          - api-network

networks:
  api-network:
       name: api-network-service

Когда службы находятся в одной сети, эти службы могут взаимодействовать с именем службы, например "http://api -name-service: 3000 ".

1 Ответ

0 голосов
/ 18 ноября 2018

Вы хотите использовать expose вместо ports:

https://docs.docker.com/compose/compose-file/compose-file-v2/#expose

Например:

services:
    app1:
        expose:
            - "3000"
    app2:
        ...

при условии наличия некоторого API на порте 3000 в app1, app2 сможет получить доступ к http://app1:3000/api

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...