首页 > 解决方案 > 通过 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 中的图像,或者我是否错误地尝试访问图像中的图像?

标签: dockerdocker-composepython-requests

解决方案


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')

推荐阅读