我在下面有一个docker-compose文件。我试图通过network-test
服务尝试访问api,该服务基本上通过docker run curl-test
调用docker.sock
。 curl-test
image / service基本上通过curl http://api:3000
将curl调用到api端点。当我运行docker compose时,curl-test
服务按预期工作,但network-test
服务失败并显示could not resolve host api
。我的问题是如何从network-test
内将对容器的引用传递给生成的容器?
version: '3'
services:
api:
build:
context: api
dockerfile: Dockerfile
ports:
- 3000:3000
curl-test:
image: curl-test
build:
context: curl-test
dockerfile: Dockerfile
depends_on:
- api
links:
- api
tty: true
network-test:
build:
context: network-test
volumes:
- /var/run/docker.sock:/var/run/docker.sock
depends_on:
- api
links:
- api
答案 0 :(得分:1)
组合服务在他们自己的专用网络上,您提供这些服务的名称,api,curl-test和网络测试只能由此网络上的DNS解析。您已从此网络中生成了一个容器,但它未附加到该容器中。由于新容器不属于此网络,因此无法解析名称' API'。您可以将容器附加到网络以解决此问题,但前提是您的组合网络是可附加的,这是默认设置。
您可以在此处阅读更多内容:https://docs.docker.com/compose/networking/
此外,没有必要运行卷曲测试服务 - 它可能会立即退出。您是在运行时创建的,所以不应该在此处列出。