我嘗試使用 pgadmin4 從 docker 連接到我的本地 postgres 資料庫,但它以unable to connect to server: timeout expired. 我的服務器正在運行,并且在 pgadmin4 中連接到服務器時,我使用了 docker-compose.yml 檔案中提到的相同屬性。
這是我的 docker-compose.yml
version: "3"
services:
web:
build:
context: .
ports:
- "8000:8000"
volumes:
- ./app:/app
command: >
sh -c "python manage.py migrate &&
python manage.py runserver 0.0.0.0:8000"
environment:
- DB_HOST=db
- DB_NAME=app
- DB_USER=postgres
- DB_PASS=secretpassword
depends_on:
- db
db:
image: postgres:10-alpine
environment:
- POSTGRES_DB=app
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=secretpassword
這是我在 pgadmin4 中遇到的錯誤的螢屏截圖

我嘗試通過檢查 docker 容器將主機地址更改為 localhost、host.docker.internal、127.0.0.1 和 IPAddress。但我每次都得到相同的結果。我還嘗試在我的 docker-compose.yml 檔案中添加 pgadmin4 作為服務并嘗試過,但也得到了相同的結果。
我很困惑我在這里缺少什么。
提前致謝。
uj5u.com熱心網友回復:
首先,您沒有從 Postgres 容器中匯出任何5432默認埠,然后您無法連接8000,因為這是從您的主機系結到您的應用程式的。
這是來自 docker-compose埠的一些描述
HOST以:格式映射埠CONTAINER時,使用低于 60 的容器埠時可能會遇到錯誤結果,因為 YAML 將 xx:yy 格式的數字決議為 base-60 值。因此,我們建議始終將您的埠映射明確指定為字串。
因此您可以嘗試"5432:5432"從您的 Pgadmin 可能需要使用 5432 埠的容器中從 Postgres DB 匯出埠。
version: "3"
services:
web:
build:
context: .
ports:
- "8000:8000"
volumes:
- ./app:/app
command: >
sh -c "python manage.py migrate &&
python manage.py runserver 0.0.0.0:8000"
environment:
- DB_HOST=db
- DB_NAME=app
- DB_USER=postgres
- DB_PASS=secretpassword
depends_on:
- db
db:
image: postgres:10-alpine
ports:
- "5432:5432"
environment:
- POSTGRES_DB=app
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=secretpassword
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/451184.html
