簡體   English   中英

Docker - host.docker.internal" (192.168.65.2) 拒絕連接

[英]Docker - host.docker.internal" (192.168.65.2) refused to connect

我正在嘗試在 Symfony 和 Docker 中連接我的 PostgreSql 數據庫並收到錯誤消息:

碼頭工人-compose.yml

services:
db:
    image: postgres:${POSTGRES_VERSION:-12}-alpine
    environment:
        POSTGRES_DB: ${POSTGRES_DB:-my_db}
        POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-root}
        POSTGRES_USER: ${POSTGRES_USER:-root}
    volumes:
        - $PWD/postgres-data:/var/lib/postgresql/data:rw
    profiles:
        - db-in-docker
    ports:
        - "5432:5432"
    networks:
        - symfony

.env.dev.local

DATABASE_URL="postgresql://root:root@host.docker.internal:5432/my_db?serverVersion=12&charset=utf8"

SQLSTATE [08006] [7] 無法連接到服務器:連接被拒絕

 Is the server running on host "host.docker.internal" (192.168.65.2) and accepting TCP/IP connections on port 5432?

我編輯了我的 /etc/hosts 文件以將此主機連接到127.0.0.1

因為這是在我的 Docker 主機上運行的 Postgres 數據庫,所以我使用 host.docker.internal,它映射到 Mac 或 Windows 上的主機 IP 使用 127.0.0.1 或 localhost 將導致代碼嘗試連接到同一個容器運行代碼,該代碼沒有運行數據庫。

如何解決這個問題?

如果 Symfony 也在 docker 中運行,您可以嘗試直接在 docker-compose.yml 中定義 ENV 並傳遞 postgres “服務”名稱/別名(docker 將解析此名稱)

像這樣(在 symfony 服務定義中)

 environment:
      - DATABASE_URL="postgresql://root:root@db/my_db?serverVersion=12&charset=utf8"

其中“db”是您的 postgres 服務名稱

我有類似的問題,對我來說這個別名有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM