![](/img/trans.png)
[英]docker compose communication between two containers: Could not resolve hostname mysshserver: Name or service not known
[英]Docker compose request between containers could not resolve host
我有两个单独的 docker 容器,每个容器都运行一个 api(auth_api 和 user_api)。
我正在尝试从user_api
服务向auth_api
服务发出获取请求,但失败并出现以下错误: curl: (6) Could not resolve host: auth_api
这些是我的 docker-compose 文件:
/auth
version: '3'
services:
auth_api:
build:
context: .
command: uvicorn main:app --host 0.0.0.0
ports:
- "8000:8000"
networks:
default:
name: shopnet
external: false
/user
version: '3'
services:
user_api:
build:
context: .
command: uvicorn main:app --host 0.0.0.0 --port 8001
ports:
- "8001:8001"
networks:
shopnet:
external: true
sho.net
.network 被创建是因为它出现在列表中: docker.network ls
我直接从user_api
容器执行带有 curl 的 GET 请求:
curl http://auth_api:8000/auth
user_api
服务没有networks:
块,因此它连接到 Compose 自动提供的default
.network。 您声明一个单独的sho.net
.network,但不要将您的 .network 附加到它。 (您的回答通过明确命名 other.network 解决了这个问题。)
您可以配置default
.network以使“user” default
.network 与“auth” default
.network 相同:
# user/docker-compose.yml
version: '3.8'
services:
user_api:
build: .
ports: ['8081:8081']
# networks: [default] # automatically provided by Compose
networks:
default:
name: shopnet
external: true
您也可以将这两种服务放在同一个docker-compose.yml
文件中,具体取决于您的特定设置,然后您就不需要任何手动networks:
根本不需要设置。
好像要加
networks:
- default
- shopnet
到 user_api 服务解决了这个问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.