[英]Cannot connect to postgresql container using npm pg in a docker-compose scenario
我正在使用npm pg
( "pg": "^7.18.2", "pg-native": "^3.0.0"
我的 package.json 中的"pg": "^7.18.2", "pg-native": "^3.0.0"
),我是新手,將我的新手node
應用程序連接到postgresql
數據庫。 我使用docker-compose
使用此配置啟動所有內容:
version: '3'
services:
postgres:
image: 'postgres:latest'
environment:
- POSTGRES_USER=postgres_user
- POSTGRES_PASSWORD=postgres_password
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres_user"]
interval: 10s
timeout: 5s
retries: 5
redis:
image: 'redis:latest'
nginx:
restart: always
build:
dockerfile: Dockerfile.dev
context: ./nginx
ports:
- '8000:80'
depends_on:
- fibclient
- fibserver
fibserver:
build:
dockerfile: Dockerfile.dev
context: ./server
volumes:
- './server:/app'
environment:
- REDIS_HOST=redis
- REDIS_PORT=6379
- PGUSER=postgres_user
- PGPASSWORD=postgres_password
- PGHOST=postgres
- PGPORT=5432
- PGDATABASE=postgres
depends_on:
- redis
- postgres
- fibworker
ports:
- '9229:9229'
fibclient:
build:
dockerfile: Dockerfile.dev
context: ./client
volumes:
- './client:/app'
fibworker:
build:
dockerfile: Dockerfile.dev
context: ./fibworker
volumes:
- './fibworker:/app'
environment:
- REDIS_HOST=redis
- REDIS_PORT=6379
ports:
- '9230:9229'
depends_on:
- redis
您可以想象fibserver
是后端應用程序,它試圖連接到托管postgresql
數據庫的postgres
服務。 可悲的是, fibserver
應用程序在連接到數據庫時總是收到此錯誤:
fibserver_1 | Error: Connection terminated due to connection timeout
fibserver_1 | at Connection.<anonymous> (/app/node_modules/pg/lib/client.js:255:9)
fibserver_1 | at Object.onceWrapper (events.js:420:28)
fibserver_1 | at Connection.emit (events.js:314:20)
fibserver_1 | at Socket.<anonymous> (/app/node_modules/pg/lib/connection.js:78:10)
fibserver_1 | at Socket.emit (events.js:314:20)
fibserver_1 | at emitCloseNT (net.js:1657:8)
fibserver_1 | at processTicksAndRejections (internal/process/task_queues.js:79:21)
fibserver_1 | at runNextTicks (internal/process/task_queues.js:62:3)
fibserver_1 | at listOnTimeout (internal/timers.js:520:9)
fibserver_1 | at processTimers (internal/timers.js:494:7)
我仔細檢查了我的docker-compose
文件,如果服務知道彼此( fibserver
可以 ping postgres
)、 npm pg
配置、文檔和示例,我覺得一切正常。 還是少了點什么。 這是在那里你可以找到整個東西。
更新:我在fibserver
放置了一個簡單的斷路器:當他無法連接到數據庫時,它會等待一段時間並再次嘗試。 好吧, fibserver
做了很多嘗試連接postgres
服務,即使在 10 分鍾之后。 可能是我對npm pg
庫的使用導致了這個問題? 如果有人想看,我也會更新主人。 謝謝你。
更新:我將 psql 安裝到 fibserver 容器中,並且成功連接到 postgres 服務,我認為這與我如何使用 pg 客戶端有關。 這是我之前應該嘗試過的。
終於有時間進一步討論這個問題了。 我在 fibserver 應用程序中卸載了兩個pg
模塊並再次安裝 pg 為我提供了一個新版本的npm
pg
模塊(8.3.3),而沒有我可能錯誤安裝的本機部分。 單個 javascript pg
庫可以完成這項工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.