我想将mysoft
docker容器连接到postgresql
docker容器。
但我有一些错误:
ERROR: for mysoft_db_1 Cannot start service db: driver failed programming external connectivity on endpoint mysoft_db_1 (XXX):
Error starting userland proxy: listen tcp 0.0.0.0:5432: bind: address already in use
ERROR: for db Cannot start service db: driver failed programming external connectivity on endpoint mysoft_db_1 (XXX):
Error starting userland proxy: listen tcp 0.0.0.0:5432: bind: address already in use
这是我的docker-compose.yml
version: '2'
services:
mysoft:
image: mysoft/mysoft:1.2.3
ports:
- "80:8080"
environment:
- DATABASE_URL=postgres://mysoft:PASSWORD@db/mysoft?sslmode=disable
db:
image: postgresql
environment:
- POSTGRES_USER=mysoft
- POSTGRES_PASSWORD=PASSWORD
- POSTGRES_DB=mysoft
ports:
- 5432:5432
我想使用另一个已经运行的docker pg服务器连接新的软件,也是一个pg docker服务器,用于更多项目 有可能吗?
答案 0 :(得分:1)
您应该将links添加到mysoft
中docker-compose.yml
服务的定义中。然后,您可以从db
容器访问mysoft
服务。
之后,您的服务定义将如下所示。
mysoft:
image: mysoft/mysoft:1.2.3
ports:
- "80:8080"
environment:
- DATABASE_URL=postgres://mysoft:PASSWORD@db/mysoft?sslmode=disable
links:
- db
现在关于绑定错误。可能是你收到它,因为你有一个在端口5432上运行的本地postgresql,或者你已经有一个正在运行的docker容器,其5432端口映射到本地机器。
ports:
- 5432:5432
用于将端口映射到本地计算机。如果您不需要从中访问容器的数据库,只需将其删除即可。
我想使用另一个已经运行的docker pg服务器来连接新的 软件,也是一个pg docker服务器,用于更多项目是否可能?
是的,这是可能的。使用external_links。
如果您选择此选项:
从db
links
服务和mysoft
服务定义中的docker-compose.yml
将external_links
与正确的容器名称添加到mysoft
服务定义。
根据容器名称和postgresql端口更新DATABASE_URL
中的主机和端口。
答案 1 :(得分:0)
您可能想检查一下您是否已在端口5432上运行本地postgres?如果你这样做,你不能做端口5432:5432,但必须将内部端口暴露给另一个外部端口,例如5555:5432
至少如果您使用本机docker(在localhost上运行)...