【问题标题】:Connect to postgres on docker container via localhost is failed通过 localhost 连接到 docker 容器上的 postgres 失败
【发布时间】:2021-11-15 05:19:47
【问题描述】:

我正在通过docker run命令在docker容器上构建postgres服务器,如下(环境参数设置正确)。

  docker run \
      --name zero2prod \
      -e POSTGRES_USER=${DB_USER} \
      -e POSTGRES_PASSWORD=${DB_PASSWORD} \
      -e POSTGRES_DB=${DB_NAME} \
      -p "${DB_PORT}":5432 \
      -d postgres \
      postgres -N 1000

但是,psql 命令连接服务器失败。我输入了如下命令。

PGPASSWORD="${DB_PASSWORD}" psql -h "localhost" -U "${DB_USER}" -p "${DB_PORT}" -d "postgres"

错误信息是这样的。

psql: error: could not connect to server: FATAL:  password authentication failed for user "postgres"

有人知道命令失败的原因吗?

注意:我使用的是 windows 10 机器,docker 环境是使用 Docker Desktop for Windows 安装的。

【问题讨论】:

  • 你能从容器日志中验证数据库运行是否正确吗?
  • 是的,容器在日志末尾说“数据库系统已准备好接受连接”,我可以从容器的内壳使用 psql 命令连接数据库。
  • 我发现当-p选项指示的主机端口和容器端口相同时,psql命令失败。但我不知道为什么...
  • @T.A 如果您已经找到解决方案,请不要将其添加到您的问题中,而是将其写为帖子的答案。它也让其他人更容易找到
  • @st.huber 感谢您的评论。我将答案移至答案部分。

标签: windows postgresql docker psql docker-desktop


【解决方案1】:

我找到了解决办法。

psql 命令执行成功。我更改了docker runp 选项更改如下。

  • 之前:-p 5432:5432
  • 之后:-p 5555:5432

我不知道为什么当主机端口与容器端口5432相同时psql命令失败。

【讨论】:

    猜你喜欢
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 2022-01-07
    • 2015-05-22
    • 1970-01-01
    相关资源
    最近更新 更多