Skip to content

Instantly share code, notes, and snippets.

@8thgencore
Last active June 24, 2024 05:43
Show Gist options
  • Select an option

  • Save 8thgencore/d04d7da8ec53b76af087cb3fe8c6d220 to your computer and use it in GitHub Desktop.

Select an option

Save 8thgencore/d04d7da8ec53b76af087cb3fe8c6d220 to your computer and use it in GitHub Desktop.
Быстрый запуск PostgreSQL через Docker Compose

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

Краткий обзор 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: настройки перезапуска контейнера и взаимодействия с ним через терминал.
  1. volumes/pgdata:
  • Определяет том pgdata, который используется для постоянного хранения данных PostgreSQL.

Запуск PostgreSQL

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

docker-compose up -d

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

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment