两个Docker容器彼此不通讯

时间:2020-02-03 13:30:27

标签: python django docker osrm

我托管了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

当我使用此地址和必需的参数访问后端时,我得到status:在邮递员中无效。这两个容器似乎没有通信,但它们都在同一网络和同一服务器中。

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

我创建了桥接的测试网络。码头工人检查还显示了同一网络中的两个容器。 可能是什么原因?谢谢

1 个答案:

答案 0 :(得分:1)

您是否考虑过使用docker-compose?使用docker-compose builddocker-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

这将为您创建一个默认网络,并将容器连接到该网络。