繁体   English   中英

Docker 容器之间的组合请求无法解析主机

[英]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:根本不需要设置。

Docker 不再在主机名中使用_

除非您很久没有更新,否则请将_替换为-

https://github.com/docker/compose/issues/229

好像要加

networks:
  - default
  - shopnet

到 user_api 服务解决了这个问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM