Docker ошибка компоновки для подключения postgres базы данных с Node API - PullRequest
0 голосов
/ 16 июня 2020

У меня возникает ошибка соединения с docker - composer, когда я пытаюсь получить доступ к базе данных postgres через API в Node.

Я использую Sequelize как ORM для доступа к база данных. Но я бы не знал, что произошло.

docker -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 .dockerfile:

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

Я получаю это ошибка:

enter image description here

Любые идеи?

Кто-нибудь может мне помочь ??

1 Ответ

0 голосов
/ 16 июня 2020

Если 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:
...