从TypeORM的Docker容器连接PostgreSQL

4

我正在尝试使用typeorm将postgres数据库连接到nodejs。

我曾尝试在本地使用postgres和nodejs进行连接,结果很正常。但是,当我将postgres和nodejs放入docker容器中时,出现了问题。

(postgres容器中docker inspect的“IPAdress”字段为172.19.0.3)

Nodejs报错:

web_1    | error: TypeORM connection error:  Error: connect ECONNREFUSED 172.19.0.3:5433

docker-compose.yml

services:
  web:
    build: .
    volumes:
      - ./:/app
    ports:
      - "9001:9001"
    links:
      - pg_db

  pg_db:
    image: postgres
    ports:
      - "5433:5433"
    env_file: 
      - docker.env

ormconfig.json

[
  {
    "name": "default",
    "driver": {
      "type": "postgres",
      "host": "pg_db",
      "port": 5433,
      "username": "postgres",
      "password": "test",
      "database": "testDB"
    },
    "autoSchemaSync": true,
    "entities": [
      "src/controller/entity/*.js"
    ],
    "cli": {
      "entitiesDir": "src/controller/entity"
    }
  }
]

谢谢

1个回答

1
PostgreSQL的默认端口是5432。在你的nodejs配置中更改它。
端口暴露对于你的nodejs来说并不是必要的,它只是将该端口链接到你的本地主机(或其他IP):
    ports:
      - "5433:5433"

你可以移除它们。
但是,如果你需要将postgres设置为监听5433端口,你需要进行一些自定义操作:
  pg_db:
    ...
    environment:
    - PGPORT=5433
    ...

哇,我真蠢。谢谢,问题解决了。我故意将它设置为5433,因为本地主机实例的Postgres正在使用端口5432,但由于某种原因,我认为Docker容器的Postgres会自动使用5433。 - M. F

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接