Контейнер Docker не может общаться - PullRequest
0 голосов
/ 05 июля 2018

У меня есть файл docker-compose с двумя службами, один из которых называется модулем, на котором работает HTTP-сервер, а другой - приборной панелью, на которой выполняется интерфейс внешнего интерфейса, использующий конечные точки API на сервере. Вот как выглядит файл docker-compose:

version: '3'

services:

  module:
    build: .
    ports: 
      - "5000:5000"
    volumes:
      - "./logs:/logs"

  web:
    build: ./dashboard
    ports: 
      - "3000:3000"

Иногда панель инструментов должна отправлять запросы в модуль, поэтому я отправляю запросы GET (в узле). Я пробовал много разных URL, но ни один из них, похоже, не получил ответа. Я попробовал:

  • http://localhost: 5000
  • http://module:5000
  • http://module

Ничто из этого не похоже на работу. Я делаю что-то неправильно? На какой URL следует отправлять запросы? Например, они не работают из-за проблем безопасности Chrome?

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Вам необходимо EXPOSE порт на модуле. Это скажет ему прослушивать изнутри Docker (порт извне, например, из вашего браузера)

module:
 build: .
 expose: 
  - "5000"
...etc
0 голосов
/ 05 июля 2018

Я предложу несколько вещей, дайте мне знать, что работает для вас.

1. Поскольку вы выставляете номер порта 5000 (для внешнего и внутреннего), то вы должны просто иметь возможность общаться с помощью IP-адреса.

2.Если вы решили не подвергать номер порта угрозе безопасности, то в файле docker-compose необходимо связать оба контейнера друг с другом, а затем с помощью имен контейнеров вы сможете обмениваться данными.

version: '3'
 services:
  module:
   build: .
   ports: 
    - "5000:5000"
   links:
    - module:web
   volumes:
    - "./logs:/logs"
  web:
   build: ./dashboard
  links:
    - web:module
   ports: 
    - "3000:3000"

А внутри вашего контейнера веб-докера вы сможете получить доступ к бэкэнду, используя http://module:5000

Примечание - модуль будет работать только изнутри док-контейнера, если вы хотите получить доступ снаружи, тогда используйте IP-адрес хост-машины.

дайте мне знать, если вам нужна помощь с этим?

...