Node- postgres зависает внутри docker контейнера при работе на сервере Ubuntu - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть приложение, работающее в нескольких контейнерах, и я использую docker -compose для запуска этих служб внутри контейнеров. Я использую NodeJS с postgresql, используя библиотеку node- postgresql (pg). Когда я запускаю приложение на моей локальной машине, оно работает отлично. А также, когда я собираю приложение на сервере Ubuntu aws e2, оно создается без каких-либо ошибок. И когда я пытаюсь проверить конечные точки, это работает довольно хорошо. Но когда я пробую конечную точку, которая включает в себя вызов базы данных, ответ не получен. Я попытался отладить приложение, добавив несколько журналов консоли, и я думаю, что проблема с библиотекой pg. Когда код достигает pool.query, он просто висит там без каких-либо ошибок. Я попытался console.log, попробуйте перехватить ошибки, но каждый раз, когда код останавливается в pool.query () и он зависает. Есть идеи, почему это происходит? Несколько часов пытался найти решение в сети, но безуспешно.

Я нашел еще одну похожую проблему здесь https://github.com/brianc/node-postgres/issues/2069

My docker -compose.yml


version: '3'
services:
  postgres:
    container_name: postgres
    image: mdillon/postgis
    environment:
      POSTGRES_MULTIPLE_DATABASES: user_data,gov_auth
      POSTGRES_USER: commhawk
      POSTGRES_PASSWORD: password
    volumes:
        - postgres:/data/postgres
        - ./database:/docker-entrypoint-initdb.d
    ports:
      - "5433:5432"
    restart: unless-stopped

  rethinkdb:
    container_name: rethinkdb
    image: rethinkdb:latest
    ports:
      - "3004:8080"
      - "29015:29015"
      - "28015:28015"
    volumes: 
      - rethinkdb:/data

  user_data_service:
    build: './user_data_service'
    container_name: uds
    ports: 
      - "3002:3000"
    depends_on: 
      - postgres
    environment:
      DATABASE_URL: postgres://commhawk:password@postgres:5432/user_data
    # volumes: 
    #   - ./user_data_service:/src
      # - container_node_modules:/src/node_modules

  gov_authority_service:
    build: './gov_authority_service'
    container_name: gov_auth
    ports:
      - "3001:3000"
    depends_on: 
      - postgres
    environment:
      DATABASE_URL: postgres://commhawk:password@postgres:5432/gov_auth
    # volumes:
    #   - ./gov_authority_service:/src 



  socket_service:
    build: './socket_service'
    container_name: socket
    ports: 
      - "3003:3000"
    depends_on: 
      - rethinkdb
    # volumes: 
    #   - ./socket_service:/src


  api_gateway:
    image: express-gateway:latest
    ports:
      - "8080:8080"
    depends_on:
      - user_data_service
      - socket_service
      - gov_authority_service
    volumes: 
      - ./api_gateway/gateway.config.yml:/var/lib/eg/gateway.config.yml 


volumes:
  postgres:
  rethinkdb:
  # container_node_modules:


Просто, когда я бегу, как показано ниже , он останавливается без какого-либо результата. Когда я включаю это в try catch, ошибка также не отображается. Нет способа отладки

let result = await pool.query("SELECT NOW()")
console.log(result)


Узел- postgresql connection

const {Pool} = require("pg");

const pool = new Pool({
  user: "commhawk",
  host: "postgres",
  database: "gov_auth",
  password: "password",
  port: "5432"
});

module.exports = pool;

Пробовал также с connectionString также. Все еще не повезло !!

Может предоставить больше информации, если это необходимо. Заранее спасибо

ОБНОВЛЕНИЕ (РЕШЕНИЕ)

Хорошо, так что я разобрался с ошибкой. Когда я собрал его на своей локальной машине, он использовал nodejs 13 и pg 8.0.2. Но когда я пытался собрать его на своем сервере (например, через 1 месяц после сборки на локальном), так как я использую нод: последний в моем Dockerfile, он извлекает последнюю версию, которая nodejs 14. Nodejs 14 несовместима с пг 8.0.2. Вот почему локальные версии работают хорошо, а серверная версия дает сбой.

Решения:

  1. Понижение nodejs до 13 для использования с pg 8.0.2
  2. Обновление pg до 8.0.3 для использования с nodejs 14
...