我有以下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。
有关如何访问postgres容器ip的任何建议吗?
答案 0 :(得分:1)
来自文档:"环境变量不再是连接到链接服务的推荐方法。"
https://docs.docker.com/compose/link-env-deprecated/
@Bukharov谢尔盖的评论是公认的答案:
"为什么需要容器IP?您始终可以通过容器名称访问,例如您的示例中的postgres。可能需要将此问题重命名为"如何从另一个容器中获取容器Ip?"因为env变量不能动态地将容器名称转换为ip地址 - "
因为我不需要IP,只能连接到容器。
答案 1 :(得分:0)
您可以按容器名称访问docker network中的另一个容器。
docker也通过ip 127.0.0.11
创建DNS服务器,你可以问它“我的容器在哪里”,如nslookup postrges