Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 两个Docker容器彼此不通信_Python_Django_Docker_Osrm - Fatal编程技术网

Python 两个Docker容器彼此不通信

Python 两个Docker容器彼此不通信,python,django,docker,osrm,Python,Django,Docker,Osrm,我托管了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>') B

我托管了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/'
当我用这个地址和必需的参数访问后端时,我得到的状态是:在Postman中无效。这两个容器似乎没有通信,但都在同一网络和同一服务器中

http://<ip address>/vrp/parse
http:///vrp/parse
我创建了桥接的测试网络。docker inspect还显示了同一网络中的两个容器。
原因可能是什么?谢谢

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

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

使用OSRM的主机(容器)名而不是ip,如果容器位于同一网络上,它们应该能够使用彼此的主机名相互通信。@nima在这种情况下,我应该能够从另一个容器ping容器名称no?但我不能ping你在ping哪个端口?您应该ping容器内的端口。在这种情况下:
9012:8090
您应该ping
8090
,而不是
9012
。而且,您可以在docker compose中为这些容器创建自己的网络,这太棒了
http://<ip address>/vrp/parse
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