如何使用容器名称与docker compose连接容器?
我试图了解如何通过容器名称访问彼此之间的容器。特别是在使用pgadmin容器并通过dns连接到postgresql容器时 在docker compose V3中,我无法链接它们,如何使用容器名称与docker compose连接容器?,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我试图了解如何通过容器名称访问彼此之间的容器。特别是在使用pgadmin容器并通过dns连接到postgresql容器时 在docker compose V3中,我无法链接它们,网络:似乎也不可用 需要这样做的主要原因是当容器启动时,它们没有静态IP地址,因此在pgadmin中,我不能每次都使用相同的IP连接到postgresql数据库,因此dns名称会更好地工作(即:容器名称) 我们可以用docker compose来实现这一点,或者至少为特定容器设置一个静态ip地址 我已尝试创建用户定义的网
网络:
似乎也不可用
需要这样做的主要原因是当容器启动时,它们没有静态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
事实上,我发现了一个紧迫的问题:
version: "0.1"
你为什么这么做?撰写文件格式的当前版本为3.x。例如:
version: "3"
例如,请参阅
版本确定可用的功能。通过设置版本:“0.1”
完全有可能明确禁用对网络
参数的支持。您将注意到,示例中显示了使用networks
属性的示例
顺便说一句,除非有特殊原因,否则我不会在您的撰写文件中使用
container\u name
,因为这使得无法在主机上运行同一个compose
文件的多个实例。网络可以从docker compose版本3获得,但您在docker compose文件中使用的是版本:“0.1”
将docker-compose.yml中的版本:“0.1”
更改为版本:“3”
您能否进一步澄清这句话:“我试图理解如何通过容器名称访问彼此之间的容器。”?另外,为什么不能使用主机名在容器之间进行通信?另外,您的示例docker compose.yml
没有显示您(尝试)使用网络的情况。你能把它更新到包含那个吗?它可能会突出显示您看到该错误的原因。