Для связывания 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.