Ошибки соединения с базой данных с помощью docker-compose POSTGRES & SEQUELIZE - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть приложение-нод, которое использует postgres и sequelize. У меня есть файл Docker, который будет запускать мой сервер. У меня также есть файл создания Docker, который будет запускать веб-изображение и изображение базы данных, которое связывает мои изображения Docker и соединяет их вместе.

Я могу запустить мой сервер через файл докера. Я пытаюсь использовать файл docker-compose для запуска базы данных с ним и заставить их работать. Я получаю сообщение об ошибке подключения к базе данных, которая пытается подключиться, и я не уверен, откуда эта ошибка ...

Dockerfile

FROM node:10
WORKDIR /app
COPY package.json ./app
RUN npm install
COPY . /app
CMD npm start
EXPOSE 5585

файл составления док-станции:

version: "2"
services: 
  web:
    build: .
    ports: 
      - 80:5585
    command: npm start 
    depends_on:
      - db
    environment:
      - DATABASE_URL=postgres://username:password@db:5432/addidas
  db:
    image: postgres 
    restart: always
    ports:
      - "5432:5432"
    environment: 
      - POSTGRES_USER=username
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=addidas

Я также использую sequelize для соединения моей базы данных с экспрессом. Нужно ли мне изменить что-либо, чтобы сделать это.

ОШИБКА:

web_1  | Fri, 09 Nov 2018 18:26:47 GMT sequelize deprecated String based operators are now deprecated. Please use Symbol based operators for better security, read more at http://docs.sequelizejs.com/manual/tutorial/querying.html#operators at node_modules/sequelize/lib/sequelize.js:242:13
web_1  | server is running at http://localhost:3001
web_1  | { SequelizeConnectionRefusedError: connect ECONNREFUSED 172.19.0.3:5432
web_1  |     at connection.connect.err (/app/node_modules/sequelize/lib/dialects/postgres/connection-manager.js:116:24)
web_1  |     at Connection.connectingErrorHandler (/app/node_modules/pg/lib/client.js:140:14)
web_1  |     at Connection.emit (events.js:182:13)
web_1  |     at Socket.reportStreamError (/app/node_modules/pg/lib/connection.js:71:10)
web_1  |     at Socket.emit (events.js:182:13)
web_1  |     at emitErrorNT (internal/streams/destroy.js:82:8)
web_1  |     at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
web_1  |     at process._tickCallback (internal/process/next_tick.js:63:19)
web_1  |   name: 'SequelizeConnectionRefusedError',
web_1  |   parent:
web_1  |    { Error: connect ECONNREFUSED 172.19.0.3:5432
web_1  |        at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1113:14)
web_1  |      errno: 'ECONNREFUSED',
web_1  |      code: 'ECONNREFUSED',
web_1  |      syscall: 'connect',
web_1  |      address: '172.19.0.3',
web_1  |      port: 5432 },
web_1  |   original:
web_1  |    { Error: connect ECONNREFUSED 172.19.0.3:5432
web_1  |        at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1113:14)
web_1  |      errno: 'ECONNREFUSED',
web_1  |      code: 'ECONNREFUSED',
web_1  |      syscall: 'connect',
web_1  |      address: '172.19.0.3',
web_1  |      port: 5432 } }
web_1  | { SequelizeConnectionRefusedError: connect ECONNREFUSED 172.19.0.3:5432
web_1  |     at connection.connect.err (/app/node_modules/sequelize/lib/dialects/postgres/connection-manager.js:116:24)
web_1  |     at Connection.connectingErrorHandler (/app/node_modules/pg/lib/client.js:140:14)
web_1  |     at Connection.emit (events.js:182:13)
web_1  |     at Socket.reportStreamError (/app/node_modules/pg/lib/connection.js:71:10)
web_1  |     at Socket.emit (events.js:182:13)
web_1  |     at emitErrorNT (internal/streams/destroy.js:82:8)
web_1  |     at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
web_1  |     at process._tickCallback (internal/process/next_tick.js:63:19)
web_1  |   name: 'SequelizeConnectionRefusedError',
web_1  |   parent:
web_1  |    { Error: connect ECONNREFUSED 172.19.0.3:5432
web_1  |        at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1113:14)
web_1  |      errno: 'ECONNREFUSED',
web_1  |      code: 'ECONNREFUSED',
web_1  |      syscall: 'connect',
web_1  |      address: '172.19.0.3',
web_1  |      port: 5432 },
web_1  |   original:
web_1  |    { Error: connect ECONNREFUSED 172.19.0.3:5432
web_1  |        at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1113:14)
web_1  |      errno: 'ECONNREFUSED',
web_1  |      code: 'ECONNREFUSED',
web_1  |      syscall: 'connect',
web_1  |      address: '172.19.0.3',
web_1  |      port: 5432 } }

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

1-е изменение на 5432 для дефолта порта postgres

db:
image: postgres 
restart: always
ports:
  - "5432:3306" //default postgres port 
environment: 
  - POSTGRES_USER=username
  - POSTGRES_PASSWORD=password
  - POSTGRES_DB=addidas
  1. Разрешить порт , к которому вы хотите подключиться

sudo ufw allow 5432

0 голосов
/ 09 ноября 2018

попробовать:

...
web:
    build: 
      context: .
    ports: 
      - 80:5585
    command: npm start
    network_mode: service:db 
    links:
      - db
    environment:
      - DATABASE_URL=postgres://username:password@db:5432/addidas
...

Другое дело, что из строки expose я предполагаю, что вы хотите запустить приложение узла на порту 5585. Но на самом деле оно работает на порту 3001 (на основе строки 2. сообщения об ошибке)

...