Найти в Дзене

Разворачиваем сервер с контейнеризацией для собственных нужд. Часть 6 - запускаем PostgeqSQL в docker-swarm

Теперь нам нужно подготовить прочную основу для дальнейшей раскатки всего и вся в контейнерах. В будущем нам понадобятся: В этой части развернём PostgreSQL. Напоминаю, что сервер развёрнут и работает в timeweb.cloud, но вы можете использовать любой другой VPS. Создаём структуру директорий: mkdir -p /home/docker-admin/infra/pgsql/service_folders/ И импорты: mkdir -p /home/docker-admin/infra/sql_backups/pgsql Так как в случае с PostgreSQL мы будем создавать виртуальный том docker - более нам не требуется ничего, кроме создания файла docker-compose.yml в директории: /home/docker-admin/infra/pgsql/ version: '3.9' services: pgsql: image: postgres:14.7-alpine environment: TZ: "Europe/Moscow" POSTGRES_USER: <имя пользователя> POSTGRES_PASSWORD: <парроль пользователя> command: ["postgres", "-c", "max_connections=100"] volumes: - pg-data:/var/lib/postgresql/data - /home/docker-admin/infra/sql_backups/pgsql:/var/tmp_import - /mnt/disk1:/var/backup networks: - portainer_composite_nw deploy: repli

Теперь нам нужно подготовить прочную основу для дальнейшей раскатки всего и вся в контейнерах. В будущем нам понадобятся:

  1. MySQL (развернули в ч. 5)
  2. PostgreSQL
  3. PHPMyAdmin
  4. PgAdmin
  5. Nginx
  6. PHP-FPM

В этой части развернём PostgreSQL.

Напоминаю, что сервер развёрнут и работает в timeweb.cloud, но вы можете использовать любой другой VPS.

Создаём структуру директорий:

mkdir -p /home/docker-admin/infra/pgsql/service_folders/

И импорты:

mkdir -p /home/docker-admin/infra/sql_backups/pgsql

Так как в случае с PostgreSQL мы будем создавать виртуальный том docker - более нам не требуется ничего, кроме создания файла docker-compose.yml в директории: /home/docker-admin/infra/pgsql/

version: '3.9'
services:
pgsql:
image: postgres:14.7-alpine
environment:
TZ: "Europe/Moscow"
POSTGRES_USER: <имя пользователя>
POSTGRES_PASSWORD: <парроль пользователя>
command: ["postgres", "-c", "max_connections=100"]
volumes:
- pg-data:/var/lib/postgresql/data
- /home/docker-admin/infra/sql_backups/pgsql:/var/tmp_import
- /mnt/disk1:/var/backup
networks:
- portainer_composite_nw
deploy:
replicas: 1
resources:
limits:
cpus: "0.5"
memory: 1G
reservations:
memory: 512M
restart_policy:
condition: on-failure
delay: 5s
max_attempts: 3
window: 120s
placement:
constraints:
- node.role == manager
ports:
- target: 5432
published: 5432
mode: host
networks:
portainer_composite_nw:
external: true
volumes:
pg-data:
driver: local

Из отличий: мы не добавляем healthcheck, но зато добавляем настройку максимального количества сессий к бд:

command: ["postgres", "-c", "max_connections=100"]

Порты что в случае с mysql, что тут проброшены с заделом на будущее. Для чего - узнаете в следующих частях.

Теперь можно запускать контейнер:

sudo docker stack deploy -c /home/docker-admin/infra/pgsql/docker-compose.yml pgsql
Сервис создан
Сервис создан
Аромат успеха
Аромат успеха

На этом наша первичная настройка завершена. В следующей части мы займёмся конфигурированием phpmyadmin, pgadmin.