如何从另一个容器获取容器Ip?

我有以下docker-compose文件:

version: '2' services: node: build: ./node/ ports: - "3000:3000" volumes: - ~/src/api:/code links: - postgres environment: - NODE_ENV=dev - POSTGRES_ADDRESS=postgres postgres: build: ./postgres/ ports: - "8000:5432" environment: - POSTGRES_PASSWORD=pw volumes: - ~/Postgres/data/:/var/lib/postgresql/data 

但是当我在我的nodejs中访问process.env.POSTGRES_ADDRESS时,它返回'postgres'。 这是我一直这样做的方式,它应该返回postgres容器的IP。

任何build议如何我可以访问postgres容器IP?

您可以通过容器名称访问Dockernetworking中的其他容器。

另外,docker用ip 127.0.0.11创buildDNS服务器,你可以问“我的容器在哪里”,比如nslookup postrges

从文档:“环境variables不再是连接到链接服务的推荐方法”。

https://docs.docker.com/compose/link-env-deprecated/

@布哈罗夫谢尔盖的评论是被接受的答案:

“你为什么需要容器IP?你总是可以通过容器名访问,就像你的例子中的postgres一样。可能需要将这个问题重命名为”如何从另一个容器获取容器Ip“,因为envvariables不能dynamic转换容器名称为IP地址 – “

因为我不需要知识产权,只有一种方法来连接到容器。