docker-compose: postgres容器不工作,因为postgres已经安装在虚拟机中并且正在被另一个应用程



我的docker-compose文件中有以下容器:

services:
#
# Database container
#
db:
image: postgres:10.0
environment:
- POSTGRES_USER=${CTR_DB_USER}
- POSTGRES_PASSWORD=${CTR_DB_PASSWORD}
- POSTGRES_DB=${CTR_DB_NAME}
volumes:
- postgres10-ctr-data:/var/lib/postgresql/data
ports:
- "5432:5432"

如果我构建容器,我得到以下错误:

Recreating ctr_db_1 ... error
ERROR: for ctr_db_1  Cannot start service db: driver failed programming external connectivity on endpoint ctr_db_1 (9faa39896fede0e32f42a0371450f1a0ed1b8d6104070fd766faa4fb95630f13): Error starting userland proxy: listen tcp4 0.0.0.0:5432: bind: address already in use
ERROR: for db  Cannot start service db: driver failed programming external connectivity on endpoint ctr_db_1 (9faa39896fede0e32f42a0371450f1a0ed1b8d6104070fd766faa4fb95630f13): Error starting userland proxy: listen tcp4 0.0.0.0:5432: bind: address already in use
ERROR: Encountered errors while bringing up the project.
make: *** [docker-build-ctr-image-and-restart] Error 1

这是因为我已经安装了posgres在我的虚拟服务器与另一个应用程序开发的另一个团队使用的数据库。我怎样才能使我的容器工作?

您不应该在一台服务器上运行两个数据库,但假设您没有其他选择,那么解决方案是将其绑定到另一个端口。例如:

ports:
- "12345:5432"

然而,端口5432是默认的(由IANA分配和标准化)用于PostgreSQL,所以改变它很可能需要配置其他东西。您最关心的是,有两个拥有不同数据库的团队在同一台服务器上工作。那个建筑值得一看。

最新更新