Docker-Compose Postgres 5432 Bind:地址已经在使用错误

好吧,所以我一直在寻找3-4天,我似乎无法find解决我的错误。 我发现了类似的错误,有些似乎在描述我的确切问题,但没有一个解决scheme奏效。

我试图得到一个简单的postgres,expression,节点应用程序启动和运行。 我希望能够运行docker-compose up -d ,并build立所有的图像,卷等。然后,我将运行一个bash脚本,将种子我的postgres数据库与数据。 但是,我不断收到我使用的端口错误。 我已经删除了所有的图像,容器,甚至重新安装了Docker,但是我无法弄清楚。 我从docker-compose中除去了一切,除了postgres,它仍然不起作用。

 version: '3' services: postgres: image: postgres:10.0 volumes: - /var/lib/postgresql/data ports: - '5432:5432' 

然后在我的主机上,我只是计划运行下面的bash脚本。

 #!/bin/bash host="postgres.dev" adminUser="postgres" psql -h $host -U $adminUser -c "select 1 from pg_database where datname = 'table_name';" | grep -q 1 || psql -h $host -U $adminUser -f ./"$(dirname $0)"/init-local-db.sql 

我知道这种方法应该工作,因为我在一个工作项目之后对它进行模式化…对他们有用。 但是,这是我得到的错误:

 ERROR: for pg-db Cannot start service postgres: driver failed programming external connectivity on endpoint pg-db (b3e5697cd563264250479682ec83d4a232d0d4bd679a787ad2089e944dda9e2f): Error starting userland proxy: listen tcp 0.0.0Creating test-api ... done ERROR: for postgres Cannot start service postgres: driver failed programming external connectivity on endpoint pg-db (b3e5697cd563264250479682ec83d4a232d0d4bd679a787ad2089e944dda9e2f): Error starting userland proxy: listen tcp 0.0.0.0:5432: bind: address already in use ERROR: Encountered errors while bringing up the project. 

我知道有些人说只是改变端口号,所以'5433:5432'但我的问题是,当你安装postgres默认其端口是5432,我知道没有必要改变它(因为工作项目doesn “T)。 有什么想法吗?

更新 (第二天早上):

好吧,我仍然不知道为什么这个错误首先popup来,因为我使用了lsof -i tcp:5432(和netstat一起),没有任何东西使用这个端口。 我把我的电脑挂起来,然后上床睡觉。 早上醒来,把我的postgres版本改为9.6,看看是否是这样,一切正常。 然后我把它切换回postgres 10.0,再次一切工作。 希望它不会再popup来,但我不知道为什么它首先popup。

只有一个原因,你可能会得到这个错误。 你已经在本地机器上安装了postgres,它正在运行,占用5432端口。

您有以下select:

  1. 在本地机器上禁用(并从启动中删除)postgres。 – 你的docker组成将运行。

    sudo服务postgresql停止

    sudo update-rc.d postgresql禁用

  2. 在docker-compose中使用不同的端口。 申请“5433:5432”没有任何问题。 docker-compose的其他服务将通过5432端口连接到postgres。 在本地机器上,你可以通过localhost:5433来访问postgres。