首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将Postgres与NodeJS连接(Docker Compose)

无法将Postgres与NodeJS连接(Docker Compose)
EN

Stack Overflow用户
提问于 2020-01-24 11:21:05
回答 1查看 400关注 0票数 1

我有下一个docker-compose文件:

代码语言:javascript
复制
version: "3"

services:
  proxy:
    build:
      context: ./client
      dockerfile: proxy.Dockerfile
    ports:
      - "80:80"
  server:
    build:
      context: .
      dockerfile: server.Dockerfile
    ports:
      - "3000:3000"
    depends_on: [db]
  db:
    image: postgres
    environment:
      POSTGRES_USER: lautidamo
      POSTGRES_PASSWORD: la12papa
      POSTGRES_DB: product-manager
    ports:
      - "5432:5432"

我有这个database.ts:

代码语言:javascript
复制
import { Sequelize } from "sequelize";

export const sequelize = new Sequelize(
  "product-manager",
  "lautidamo",
  "la12papa",
  {
    dialect: "postgres",
    host: "localhost",
    port: 5432
  }
);

代理和服务器服务工作正常。但是,当我向必须连接到数据库的路由发出请求时,会出现以下错误connect ECONNREFUSED 127.0.0.1:5432。

EN

回答 1

Stack Overflow用户

发布于 2020-01-24 11:28:03

不要连接到localhost。连接到数据库服务的名称。在您的情况下,应该是db

它看起来像这样:

代码语言:javascript
复制
export const sequelize = new Sequelize(
  "product-manager",
  "lautidamo",
  "la12papa",
  {
    dialect: "postgres",
    host: "db",
    port: 5432
  }
);

编辑:另外,还有几点...

  1. 您不需要在您的db服务中使用该ports选项,除非您想要从外部连接到它。也就是说,如果您想要使用组合外部的东西连接到数据库容器,例如dbeaver或某种数据库管理工具,则只需要在其中使用它。
  2. 我认为你可以把这些DB凭证放在.env文件中,放在你的docker-compose.yml旁边。如果您将它们添加到server服务定义中,则可以使用process.env.POSTGRES_USER等访问这些值。:)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59889986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档