-
Рецепт предназначен для упрощённого развёртывания PostgreSQL и pgAdmin с возможностью подключения к Docker-сети и использования маршрутизации через Traefik.
-
Возможны два сценария использования:
1. Локальный режим (без Traefik):
- переменную
TRAEFIK_NETWORK_NAMEуказывать не нужно; - используется сеть по умолчанию —
db_stack_network; - параметр
external=false.
Docker автоматически создаст сеть. Подходит для разработки и простого локального запуска.
2. Использование с Traefik (локальным или внешним):
- в переменной
TRAEFIK_NETWORK_NAMEнеобходимо указать имя сети, к которой подключён контейнер Traefik (например,traefik_public_network); - параметр
externalдолжен быть установлен вtrue.
В этом случае Docker не создаёт сеть — используется уже существующая сеть, в которой работает Traefik (независимо от того, развёрнут он локально или на отдельном сервере).
- переменную
- в репозитории находится шаблон .env.example файла, если это необходимо создайте копию этого файла с названием .env рядом с docker compose файлом
- к примеру на linux для этого выполните комманду
cp .env.exapmle .envнаходясь в скачаном репозитории
- к примеру на linux для этого выполните комманду
- для работы переменных не обходимо расскоментировать нужные
Примечание: возможно задать нужные параметры
VERSION_Pверсия образа для PostgreSQLVERSION_PGверсия образа для pgAdmin
Примечание: Возможность указывать кастомные сборки сознательно исключена. Проект ориентирован исключительно на использование актуальных официальных образов в целях безопасности и стабильности.
HOST_PORT_Pпорт хоста для PostgreSQLVERSIHOST_PORT_PGON_Pпорт хоста для pgAdmin
Important
для безопасности в файле override блок для порта pgadmin закоментированы так как он необходим если не используется маршрутизация traefik
TRAEFIK_ENABLEDбулевое значение для включения traefikDOMAINимя domain, или будет использовано значение по умолчанию localhostCERT_RESOLVERуказывает имя обработчика сертефикатов, если значение не задать то по умолчанию будет пустое traefik создаст локальный самоподписаный сертификатTRAEFIK_NETWORK_NAMEимя сети traefikTRAEFIK_NETWORK_EXTERNALбулевое значение для выбора режима работы сети то есть докер создаст сеть локальную или подключится к уже созданной сети traefik
В репозитории находится шаблон файла .env.example. Для настройки конфигурации создайте его копию с именем .env в той же директории, где находится файл docker-compose.yml.
-
К примеру, в Linux для этого выполните команду:
cp .env.example .env
-
Чтобы активировать нужную переменную, раскомментируйте её (уберите символ
#в начале строки) и задайте необходимое значение. По умолчанию стек уже преднастроен для локальной разработки.
Примечание: Возможность указывать кастомные сборки сознательно исключена. Проект ориентирован исключительно на использование актуальных официальных образов в целях безопасности и стабильности. Если переменные закомментированы, Docker по умолчанию загрузит тег
latest.
VERSION_P— версия официального образа для PostgreSQL (например,16-alpine).VERSION_PG— версия официального образа для pgAdmin (например,8.5).
HOST_PORT_P— порт хоста для доступа к PostgreSQL (по умолчанию5432). Измените, если этот порт уже занят на сервере.HOST_PORT_PG— порт хоста для прямого доступа к pgAdmin (по умолчанию8080).
Important
Для обеспечения безопасности в файле docker-compose.override.yml блок портов для pgAdmin по умолчанию закомментирован. Прямая публикация порта требуется только в том случае, если вы не используете маршрутизацию через Traefik.
TRAEFIK_ENABLED— булевое значение (true/false) для включения маршрутизации через Traefik. Если указаноfalse, доступ к сервисам настраивается через порты вoverride-файле.DOMAIN— ваше доменное имя (должно указывать на IP-адрес сервера). Если оставить пустым, будет использовано значение по умолчанию —localhost.CERT_RESOLVER— имя резолвера (обработчика) SSL-сертификатов, настроенного в вашем Traefik (например,myresolver). Если значение не задано, Traefik создаст локальный самоподписанный сертификат для тестирования.TRAEFIK_NETWORK_NAME— имя Docker-сети, которую Traefik использует для маршрутизации трафика.TRAEFIK_NETWORK_EXTERNAL— булевое значение (true/false), определяющее режим работы сети. Укажитеtrue, если сеть Traefik уже создана в системе внешним образом (вне этого стека). Еслиfalse, Docker Compose создаст локальную сеть автоматически.
Up stack as default with service pgAdmin.
docker docker compose --profile tools up -dDown stack as default with service pgAdmin.
docker compose --profile tools downUp stack as default without service pgAdmin, only base service postgresql.
docker compose up -dDown stack as default without service pgAdmin, only base service postgresql.
docker compose downImportant
Access pgAdmin by host ip:host port example:'192.168.100.1:9080'
Caution
Не используйте флаг -v при очистке:
Если вы выполните команду остановки вот так: docker compose down -v (с флагом -v или --volumes), Docker удалит и контейнеры, и уничтожит все волумы container вместе с базой данных. Используйте эту команду только в том случае, если хотите намеренно сбросить проект до заводских настроек.
Не меняйте имена волумов без необходимости: Если вы переименуете postgres_data_volume в postgres_super_data, Docker при запуске создаст абсолютно новый, пустой волум, а старый останется в системе.
English: Materials are provided as is under the LICENSE file. No warranties, no rights granted unless explicitly stated. Authors are not liable for damages. No partnership or obligations created.
Русский: Материалы предоставляются как есть и регулируются LICENSE. Гарантий нет, права не передаются без явного указания. Автор(ы) не несут ответственности. Партнёрство или обязательства не создаются.
📌 See full disclaimer in DISCLAIMER.md
Проект лицензирован под GNU Affero General Public License v3.0 (AGPLv3). См. LICENSE для подробностей.