[英]Could not connect to local postgres DB from docker using pgadmin4
我嘗試使用 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 之類的地址。 但我每次都得到相同的結果。 我還嘗試將 pgadmin4 作為服務添加到我的 docker-compose.yml 文件中並進行了嘗試,但也得到了相同的結果。
我很困惑我在這里缺少什么。
提前致謝。
首先,您沒有從 Postgres Container 導出任何端口,默認端口可能是5432
,然后您無法連接8000
,因為這是從您的主機綁定到您的應用程序。
這是 docker-compose 端口的一些描述
以
HOST
:CONTAINER
格式映射端口時,如果使用低於 60 的容器端口,您可能會遇到錯誤結果,因為 YAML 將 xx:yy 格式的數字解析為 base-60 值。 出於這個原因,我們建議始終將您的端口映射明確指定為字符串。
因此您可以嘗試從您的 Pgadmin 可能需要使用 5432 端口的容器中從 Postgres DB 導出端口"5432:5432"
。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.