好了,我现在已经搜索了3-4天,但似乎找不到解决我的错误的方法。我发现了类似的错误,有些错误似乎在描述我的确切问题,但没有一种解决方案有效。

我正在尝试启动并运行一个简单的postgres,express,node应用程序。我希望能够运行docker-compose up -d并使其构建所有图像,卷等。然后,我将运行一个bash脚本,该脚本将为postgres db注入(inject)数据。但是,我一直在使用的端口出现错误。我已经删除了所有图像,容器,甚至重新安装了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,并且我知道没有必要更改它(因为工作项目不需要)。有什么想法吗?

更新(第二天早上):

好的,我仍然不知道为什么首先出现该错误,因为我使用了lsof -i tcp:5432(以及netstat),但是使用该端口却没有出现任何错误。我将计算机置于挂起模式并上床 sleep 。早上醒来,将postgres版本更改为9.6,以查看是否一切正常。然后,我将其切换回postgres 10.0,然后一切正常。希望它不会再次弹出,但我不知道为什么首先弹出它。

最佳答案

只有一个原因可能会导致您收到此错误。您已经在本地计算机上安装了PostgreSQL并且它正在运行,占用端口5432。

您有以下选择:

  • 在本地计算机上禁用(并从启动中删除)PostgreSQL。 -您的Docker Compose将运行。
    sudo service postgresql stop
    
    sudo update-rc.d postgresql disable
    
  • 在docker-compose中使用其他端口。应用'5433:5432'没有错。 docker-compose的其他服务将通过5432端口连接到postgres。在本地计算机上,您将可以通过localhost:5433解决postgres。
  • 关于node.js - Docker-Compose Postgres 5432绑定(bind): Address already in use error,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47069540/

    10-12 00:07
    查看更多