Как связать nodejs с postgress в docker?

Для связывания Node.js с PostgreSQL в Docker вам понадобятся следующие шаги:

1. Установите Docker и Docker Compose на свою машину, если они еще не установлены. Docker Compose позволит вам управлять несколькими контейнерами Docker одновременно.

2. Создайте новую директорию для вашего проекта и перейдите в нее в командной строке.

3. Создайте файл с именем "Dockerfile" в корне вашей директории проекта, и укажите следующее содержимое:

FROM node:latest
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "node", "index.js" ]

4. Создайте файл с именем "docker-compose.yml" в корне вашей директории проекта, и укажите следующее содержимое:

version: "3"
services:
  postgres:
    image: postgres
    restart: always
    environment:
      POSTGRES_PASSWORD: example
    ports:
      - "5432:5432"
    volumes:
      - ./data:/var/lib/postgresql/data
  app:
    build:
      context: .
      dockerfile: Dockerfile
    restart: always
    depends_on:
      - postgres
    volumes:
      - .:/app
    ports:
      - "3000:3000"

5. Создайте файл "index.js" в корне вашей директории проекта, и добавьте в него следующий код:

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

const pool = new Pool({
  user: 'postgres',
  host: 'postgres',
  database: 'postgres',
  password: 'example',
  port: 5432,
});

pool.query('SELECT NOW()', (err, res) => {
  console.log(err, res);
  pool.end();
});

6. Запустите приложение через Docker Compose с помощью команды docker-compose up --build. Это создаст и запустит два контейнера: один со СУБД PostgreSQL, другой с Node.js приложением.

7. Когда контейнеры запустятся, вы увидите вывод подключения к базе данных в терминале Node.js приложения.

Теперь вы успешно связали Node.js с PostgreSQL в Docker. Node.js приложение будет подключаться к базе данных, используя параметры, указанные в файле "index.js". Если вам необходимо взаимодействовать с базой данных из Node.js приложения, вы можете использовать любую Node.js библиотеку для работы с PostgreSQL, такую как pg-promise или Sequelize.