【发布时间】:2019-04-12 10:24:43
【问题描述】:
我试图了解如何通过容器名称在彼此之间访问容器。特别是在使用 pgadmin 容器并通过 dns 连接到 postgresql 容器时。
在 docker-compose V3 中,我无法链接它们,networks: 似乎也不可用。
需要这个的主要原因是当容器启动时它们没有静态 IP 地址,所以在 pgadmin 中我不能每次都使用相同的 IP 连接到 postgresql 数据库,所以一个 dns 名称可以工作更好(即:容器名称)。
我们可以使用 docker-compose 来做到这一点,或者至少为特定容器设置一个静态 IP 地址吗?
我已尝试创建用户定义的网络:
networks:
backed:
然后在服务中使用它:
app:
networks:
- backend
这会导致有关应用程序中“网络”选项无效的 docker-compose 错误。
docker-compose.yml
version: "0.1"
services:
devapi:
container_name: devapi
restart: always
build: .
ports:
- "3000:3000"
api-postgres-pgadmin:
container_name: api-postgres-pgadmin
image: dpage/pgadmin4:latest
ports:
- "5050:80"
environment:
- PGADMIN_DEFAULT_EMAIL=stuff@stuff.com
- PGADMIN_DEFAULT_PASSWORD=12345
api-postgres:
container_name: api-postgres
image: postgres:10
volumes:
- ./data:/data/db
ports:
- "15432:5432"
environment:
- POSTGRES_PASSWORD=12345
【问题讨论】:
-
您能否进一步澄清这句话“我试图了解我如何通过容器名称在彼此之间访问容器。”?另外,为什么不能使用主机名在容器之间进行通信?
-
另外,您的示例
docker-compose.yml没有显示您(尝试)使用networks。您可以更新它以包含它吗?它可能会突出显示您看到该错误的原因。
标签: docker docker-compose dockerfile