我有以下 Docker Compose 文件,我在其中声明了 3 个服务:db
、api
、sdk-py-test
服务 sdk-py-test
创建了一个容器 craft-sdk-py-test
,它向名为 craft-api
的服务创建的 GraphQL API 容器 api
发送一堆 http 请求。
当 craft-sdk-py-test
在外部 URL 上发送请求时,请求成功:http://172.30.0.3:5433/graphql
但是当我尝试通过 Docker 网络内部 URL 发送它们时:http://api:5433/graphql
我立即收到一条错误消息:
gql.transport.exceptions.TransportServerError:502 服务器错误:无法解析 url:http://api:5433/graphql
如何使用内部服务名称 api
而不是 IP 地址来路由请求?
Docker Compose 文件
version: "3.5"
services:
db:
container_name: craft-db
restart: always
image: craft-db
env_file:
- ./.env
ports:
- 5432:5432
api:
container_name: craft-api
restart: always
image: craft-api
env_file:
- ./.env
depends_on:
- db
ports:
- 5433:5433
sdk-py-test:
container_name: craft-sdk-py-test
image: craft-sdk-py-test
build:
context: ./
dockerfile: Dockerfile.test
env_file:
- ./.env
depends_on:
- api
volumes:
- ./tests:/tests/tests
- ./craft:/tests/craft
command: ["nose2", "-v"]