Работали ли вы с базами данных в Docker-контейнерах?

«Работали ли вы с базами данных в Docker-контейнерах?» — вопрос из категории DevOps, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, в нескольких проектах на Node.js мы использовали Docker для изоляции сервисов баз данных, таких как PostgreSQL и Redis. Основные практики, которые я применял:

  1. Использование Docker Volumes для сохранения данных:

    docker run -d 
      --name postgres-db 
      -v postgres_data:/var/lib/postgresql/data 
      -e POSTGRES_PASSWORD=strongpassword 
      postgres:15-alpine
  2. Настройка сети и подключение Node.js приложения: В docker-compose.yml определял общую сеть, чтобы контейнер приложения мог подключиться к контейнеру БД по имени сервиса.

    services:
      app:
        build: .
        depends_on:
          - db
        environment:
          - DATABASE_URL=postgres://user:pass@db:5432/mydb
      db:
        image: postgres:15-alpine
        volumes:
          - postgres_data:/var/lib/postgresql/data
  3. Реализация health-check в приложении: Писал скрипт инициализации на Node.js, который проверял доступность БД через pg клиент перед запуском основного сервера, чтобы избежать ошибок подключения при старте системы.