首页 > 解决方案 > 无法从 Web Docker 容器连接到外部 PostgreSql 数据库

问题描述

我已经在我的机器上安装了 PostgreSql,我想将它用作 Dockerized Laravel Web 应用程序的外部数据库。我不想使用 postgre 图像,而是使用本地数据库。它也可以是mysql。

码头工人-compose.yml

     `version: ‘3’
        services:
        app:
        build:
        context: .
        dockerfile: .docker/Dockerfile
        image: docker-app
        ports:
        - 8004:80`

    .env 

 `DB_CONNECTION=pgsql
    DB_HOST= 127.0.0.1 or localhost
    DB_PORT=5432
    DB_DATABASE=testdb
    DB_USERNAME=postgres
    DB_PASSWORD=password`

错误如下:

SQLSTATE [08006] [7] 无法连接到服务器:连接被拒绝

服务器是否在主机“127.0.0.1”上运行并接受端口 5432 上的 TCP/IP 连接?`

问题的原因我知道应用程序容器没有连接到外部数据库,因为它在其文件系统之外。

如果我将 DB_HOST 更改为本地 IP 地址,就会出现这个

错误:SQLSTATE[08006] [7] FATAL: no pg_hba.conf entry for host 10.0.9.57`

标签: windowsdockerdocker-compose

解决方案


如果您收到消息“主机 10.0.9.57 没有 pg_hba.conf 条目”,您需要将 postgresql 的配置更改为来自 docker 映像(10.0.9.57)的所有远程连接,请参阅此答案


推荐阅读