Pull to refresh

Быстрый запуск PostgreSQL через Docker Compose

Level of difficultyEasy
Reading time3 min
Views23K

Доброго времени суток! Сегодня я продемонстрирую вам, как быстро и эффективно настроить PostgreSQL с помощью Docker Compose. Этот процесс займет всего несколько минут, но в результате вы получите полноценную базу данных PostgreSQL, работающую в изолированном Docker контейнере. Важные компоненты, такие как базы данных, таблицы и индексы, будут сохранены на вашей локальной машине благодаря использованию томов (volumes), что обеспечит надежность и доступность данных.

Подготовка

Прежде чем приступить к развертыванию PostgreSQL на вашем локальном компьютере или VPS сервере, необходимо установить Docker и Docker Compose.

Docker — это платформа для разработки, доставки и эксплуатации приложений в контейнерах. Контейнеры позволяют упаковывать приложения со всеми необходимыми зависимостями в единую стандартизированную единицу, что обеспечивает изоляцию и повторяемость окружения в любой среде.

Docker Compose — инструмент для определения и запуска многоконтейнерных Docker приложений. С его помощью вы можете описать все компоненты вашего приложения в файле docker-compose.yml и запустить их одной командой. Docker Compose упрощает управление множеством контейнеров, позволяя определить зависимости и настройки сети, а также легко настраивать параметры окружения.

Если вы новичок в использовании Docker, рекомендуется начать с установки Docker Desktop на вашем локальном компьютере. Это приложение автоматически установит Docker и Docker Compose, облегчив первоначальное знакомство с контейнеризацией.

Далее я покажу вам пример настройки docker-compose.yml файла. Этот подход позволит не просто быстро развернуть PostgreSQL, но и обеспечит вам надежность в хранении данных, ведь в основе лежит volumes.

Шаг 1: Создание Docker Compose файла

Создаем пустую дирректоию и переходим в нее. В созданной дирректории создадим файл docker-compose.yml, который опишет наш сервис PostgreSQL. Вот пример моего файла:

version: '3.9'

services:
  postgres:
    image: postgres:latest
    container_name: postgres_container
    environment:
      POSTGRES_USER: postgres_user
      POSTGRES_PASSWORD: postgres_password
      POSTGRES_DB: postgres_db
      PGDATA: /var/lib/postgresql/data/pgdata
    ports:
      - "5430:5432"
    volumes:
      - ./pgdata:/var/lib/postgresql/data/pgdata
    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 512M
        reservations:
          cpus: '0.25'
          memory: 256M
    command: >
      postgres -c max_connections=1000
               -c shared_buffers=256MB
               -c effective_cache_size=768MB
               -c maintenance_work_mem=64MB
               -c checkpoint_completion_target=0.7
               -c wal_buffers=16MB
               -c default_statistics_target=100
    healthcheck:
      test: [ "CMD-SHELL", "pg_isready -U postgres_user -d postgres_db" ]
      interval: 30s
      timeout: 10s
      retries: 5
    restart: unless-stopped
    tty: true
    stdin_open: true

volumes:
  pgdata:
    driver: local

Краткий обзор Docker Compose файла

  1. services/postgres:

    • image: используемая Docker-образ PostgreSQL, в данном случае postgres:latest.

    • container_name: имя контейнера, в котором будет запущен PostgreSQL.

    • environment: переменные окружения для настройки PostgreSQL (пользователь, пароль, имя базы данных - не забудьте указать свои).

    • ports: проброс портов, где "5430:5432" означает, что порт PostgreSQL внутри контейнера (5432) проброшен на порт хоста (5430). Это значит что для подключения к постгрес нужно будет прописывать порт 5430.

    • volumes: монтируем локальный каталог ./pgdata внутрь контейнера для сохранения данных PostgreSQL.

    • deploy: определяет ресурсы и стратегию развертывания для Docker Swarm (необязательно для стандартного использования Docker Compose).

    • command: дополнительные параметры командной строки PostgreSQL для настройки параметров производительности.

    • healthcheck: проверка состояния PostgreSQL с использованием pg_isready.

    • restart, tty, stdin_open: настройки перезапуска контейнера и взаимодействия с ним через терминал.

  2. volumes/pgdata:

    • Определяет том pgdata, который используется для постоянного хранения данных PostgreSQL.

Запуск PostgreSQL

Чтобы развернуть PostgreSQL с помощью этого файла Docker Compose, выполните следующую команду в каталоге с файлом docker-compose.yml (будет одинаково работать, как на VPS, так и на вашей локальной машине):

docker-compose up -d

Эта команда запустит контейнер PostgreSQL в фоновом режиме (-d) на основе настроек, указанных в файле docker-compose.yml.

Если контейнер был развернут на локальной машине, то в качестве хоста можно использовать "localhost". В ином случае используйте ip адрес VPS сервера.

Заключение

Использование Docker Compose для развертывания PostgreSQL позволяет значительно упростить управление базой данных, обеспечивая при этом высокую гибкость и надежность. Описанный выше файл docker-compose.yml содержит базовые настройки для запуска PostgreSQL с настройками производительности, мониторингом состояния и управлением ресурсами, что делает его отличным выбором для большинства проектов.

Если эта информация была вам полезной - сообщите об этом через лайк, комментарий или подписку.

Благодарю за внимание.

Only registered users can participate in poll. Log in, please.
Хотели бы вы увидеть цикл моих статей на тему Docker?
70.59% Да72
29.41% Нет30
102 users voted. 8 users abstained.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
Total votes 17: ↑9 and ↓8+4
Comments16

Articles