docker - 通过 docker-compose 使用另一个图像
问题描述
我有一个关于 docker-compose 文件和让一个图像通过requests.post
调用使用另一个图像的问题?我无法将两个图像连接在一起和/或访问图像。
这是我的 docker-compose.yml 的样子:
version: "3.7"
services:
cerberus:
image: "ctpelok77/ibmresearchaiplanningsolver"
ports:
- "4501:4501"
my-external-planner:
build: .
ports:
- "8000:8000"
然后我使用以下命令:
docker-compose up -d
docker run -it external-planner_my-external-planner
在里面my-external-command
,我使用以下行response = requests.post('http://cerberus:4501/planners/satisficing/seq-sat-cerberus', headers=headers, data=body_str)
;然而,这给了我一个
requests.exceptions.ConnectionError: HTTPConnectionPool(host='cerberus', port=4501): Max retries exceeded with
url: /planners/satisficing/seq-sat-cerberus (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f90eeb04510>: Failed to establish a new connection: [Errno -2] Name or service not known',))
我想知道我是否没有正确连接 docker-compose 中的图像,或者我是否错误地尝试访问图像中的图像?
解决方案
docker-compose.yml
我可以通过为服务提供特定名称并在文件中为它们分配一个共享网络来修改此问题:
version: "3.7"
services:
my-ibm-planner:
image: "ctpelok77/ibmresearchaiplanningsolver"
ports:
- "4501:4501"
container_name: "ibm-container"
networks:
- network-planner
tty: true
my-external-planner:
image: "docker.sift.net/tbessho/external-planner"
ports:
- "8000:8000"
networks:
- network-planner
container_name: "ext-plan"
tty: true
networks:
network-planner:
name: network-planner
连同更改 python 脚本以使用以下行:
response = requests.post('http://ibm-container:4501/planners/satisficing/seq-sat-cerberus')
推荐阅读
- javascript - 如何将输入存储在本地存储中
- google-cloud-dataflow - 每当发送特定的发布/订阅消息时,是否可以重新加载删除/重新加载 Bigquery 表?
- json - 可编码的 Swift JSON 解析嵌套的 JSON
- web - hybris 中的网络浏览器
- python - 如何在 pygame 上使用字体系列?
- reactjs - 使用 StackAction 重置后 React Native Back 按钮消失
- python-3.x - Tensorflow:Dataset.from_generate()ValueError:使用序列设置数组元素
- json - Kotlin 中 JSONArray 中的 MutableList
- templates - Prestashop 1.6 - 存储在数据库和订单页面后,“已发货”模板中未显示跟踪号
- google-app-engine - App Engine:如何在本地导入 Datastore