首页 > 解决方案 > Docker 撰写错误以将 postgres 数据库与 Node API 连接

问题描述

当我尝试通过 Node.js 中的 API 访问 postgres 数据库时,我遇到了与 docker-composer 的连接错误。

我使用 Sequelize 作为 ORM 来访问数据库。但我不知道发生了什么。

码头工人-compose.yml

version: '3.5'

services:
  api-service:
    build:
      context: .
      dockerfile: ./api-docker.dockerfile
    image: api-service
    container_name: api-service
    restart: always
    env_file: .env
    environment:
      - NODE_ENV=$NODE_ENV
    ports:
      - ${PORT}:3000
    volumes:
      - .:/home/node/api
      - node_modules:/home/node/api/node_modules
    depends_on:
      - postgres-db
    networks:
      - api-network
    command: npm run start:dev 

  postgres-db:
    expose:
      - ${PORT_SERVICE}
    ports:
      - ${PORT_SERVICE}:5432
    restart: always
    env_file: .env
    volumes:
      - pgReportData:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: ${USER_SERVICE}
      POSTGRES_PASSWORD: ${PASSWORD_SERVICE}
      POSTGRES_DB: ${DATABASE_SERVICE}
    networks:
      - api-network
    container_name: postgres-db
    image: postgres:10

networks:
  api-network:
    driver: bridge

volumes:
  pgReportData:
    driver: local
  node_modules:

.env:

NODE_ENV=development
PORT=30780
HOST_SERVICE=postgres-db
DATABASE_SERVICE=base
USER_SERVICE=user
PASSWORD_SERVICE=password
DIALECT=postgres
PORT_SERVICE=5444

api-docker.docker 文件:

FROM node:12
WORKDIR /src
COPY . .
COPY --chown=node:node . .
USER node
RUN npm install
EXPOSE $PORT
ENTRYPOINT ["npm", "run", "start:dev"]

当我运行时: docker-compose up

我收到此错误:

在此处输入图像描述

有什么想法吗?

有人能帮我吗 ??

标签: node.jspostgresqldockerdocker-compose

解决方案


如果 node 是唯一连接到 postgre-db 的应用程序,您可以删除网络,并公开 postgredb 运行端口 (5432)。要连接到数据库,您可以简单地使用容器名称作为主机。

连接字符串:"postgres://YourUserName:YourPassword@postgres-db:5432/YourDatabase";

version: '3.5'

services:
  api-service:
    build:
      context: .
      dockerfile: ./api-docker.dockerfile
    image: api-service
    container_name: api-service
    restart: always
    env_file: .env
    environment:
      - NODE_ENV=$NODE_ENV
    ports:
      - ${PORT}:3000
    volumes:
      - .:/home/node/api
      - node_modules:/home/node/api/node_modules
    depends_on:
      - postgres-db
    command: npm run start:dev 

  postgres-db:
    expose:
      - 5432
    restart: always
    env_file: .env
    volumes:
      - pgReportData:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: ${USER_SERVICE}
      POSTGRES_PASSWORD: ${PASSWORD_SERVICE}
      POSTGRES_DB: ${DATABASE_SERVICE}
    container_name: postgres-db
    image: postgres:10

volumes:
  pgReportData:
    driver: local
  node_modules:

推荐阅读