我托管了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
我创建了桥接的测试网络。码头工人检查还显示了同一网络中的两个容器。 可能是什么原因?谢谢
答案 0 :(得分:1)
您是否考虑过使用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
这将为您创建一个默认网络,并将容器连接到该网络。