Два Docker контейнера не общаются друг с другом - PullRequest
0 голосов
/ 03 февраля 2020

Я размещал сервер OSRM: https://hub.docker.com/r/osrm/osrm-backend/

docker run -t -i --network="test-net" -p 5000:5000 -v "${PWD}:/data" osrm/osrm-backend osrm-routed --algorithm mld /data/indonesia-latest.osrm

И он работает, так как я получаю следующий вывод при его просмотре:

{"message":"URL string malformed close to position 1: \"\/\"","code":"InvalidUrl"}

Бэкэнд создается с использованием Django, и предполагается, что следующий код попадет на сервер OSRM и даст ответ:

BACKEND_HOST = os.getenv('WEB_VRP_BACKEND_HOST', '<ip address of osrm hosted server>')
BACKEND_PORT = os.getenv('WEB_VRP_BACKEND_PORT', '5000')

request = 'http://' + BACKEND_HOST + ':' + BACKEND_PORT + '/table/v1/driving/'

И OSRM, и Django размещены на одном сервере и в одной сети. Бэкэнд строится с использованием docker и запускается

docker run --name vrp-backend --network="test-net" -d -p 9012:8090 vrp-web-django

И когда я получаю бэкэнд с этим адресом и необходимыми параметрами, я получаю статус: недопустимый в Почтальоне. Кажется, что эти два контейнера не взаимодействуют, но оба находятся в одной сети и на одном сервере.

http://<ip address>/vrp/parse

Я создал тестовую net сеть с мостовым соединением. И docker inspect также показывает оба контейнера в одной сети. Что может быть причиной? Спасибо

1 Ответ

1 голос
/ 03 февраля 2020

Рассматривали ли вы использование docker-compose? Вам будет проще собрать и запустить несколько контейнеров с docker-compose build и docker-compose up. Файл yaml может выглядеть примерно так:

version: "2.2"
services:
  vrp-backend:
    restart: always
    build: path/to/dockerfile # or image: image_name:latest
    command: python3 manage.py runserver
    ports:
      - '9012:8090'
    links:
      - 'osrm:osrm'
  osrm:
    image: osrm/osrm-backend
    command: osrm-routed --algorithm mld /data/indonesia-latest.osrm

Это создаст для вас сеть по умолчанию и подключит к ней контейнеры.

...