Доброго времени суток! Сегодня я продемонстрирую вам, как быстро и эффективно настроить 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 файла
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: настройки перезапуска контейнера и взаимодействия с ним через терминал.
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 с настройками производительности, мониторингом состояния и управлением ресурсами, что делает его отличным выбором для большинства проектов.
Если эта информация была вам полезной - сообщите об этом через лайк, комментарий или подписку.
Благодарю за внимание.