无法连接到Docker Compose中的Postgres数据库



我正在构建一个Node JS Web应用程序。我正在使用Postgres SQL和Sequelize数据库。

我有docker-compose。

version: '3.8'
services:
web:
container_name: web-server
build: .
ports:
- 4000:4000
restart: always
depends_on:
- postgres
postgres:
container_name: app-db
image: postgres:11-alpine
ports:
- '5431:5431'
environment:
- POSTGRES_USER=docker
- POSTGRES_PASSWORD=secret
- POSTGRES_DB=babe_manager
volumes:
- ./postgres-data:/var/lib/postgresql/data
build:
context: .
dockerfile: ./pgconfig/Dockerfile
volumes:
app-db-data:

我正在使用以下凭据连接到数据库。

DB_DIALECT=postgres
DB_HOST=postgres
DB_NAME=babe_manager
DB_USERNAME=docker
DB_PORT=5431
DB_PASSWORD=secret

当应用程序试图连接到数据库时,我得到以下错误:

getaddrinfo ENOTFOUND postgres

我也试过用这个

DB_DIALECT=postgres
DB_HOST=localhost
DB_NAME=babe_manager
DB_USERNAME=docker
DB_PORT=5431
DB_PASSWORD=secret

这次我得到了以下错误:

connect ECONNREFUSED 127.0.0.1:5431

我的应用服务器不在docker- composer .yaml中。我只是使用"nodemon server.js"启动它。我该怎么修理它?

您需要确保您的Postgres容器和您的Node在同一个网络上。在它们驻留在公共网络中之后,您可以使用docker的DNS从Node应用程序解析数据库。在您的情况下,使用postgres或test-db作为主机名应该可以工作。更多关于docker网络上的容器通信。

最新更新