Avatar

my-app-s(M.R.E)

Мой репозиторий:

postgresql-stack

Stack

[!NOTE]

Postgresql stack

Docker License CI CI

📦 This is a recipe for deploy container postgresql and pgAdmin as tools.

Введение

1. Локальный режим (без Traefik): - переменную TRAEFIK_NETWORK_NAME указывать не нужно; - используется сеть по умолчанию — db_stack_network; - параметр external = false.

Docker автоматически создаст сеть. Подходит для разработки и простого локального запуска.

2. Использование с Traefik (локальным или внешним): - в переменной TRAEFIK_NETWORK_NAME необходимо указать имя сети, к которой подключён контейнер Traefik (например, traefik_public_network); - параметр external должен быть установлен в true.

В этом случае Docker не создаёт сеть — используется уже существующая сеть, в которой работает Traefik (независимо от того, развёрнут он локально или на отдельном сервере).

Настройка переменных окружения

[!IMPORTANT] Настоятельно рекомендуется установить свои логины и пароли для безопасности

В данном шаблоне находятся следующие переменные:

Примечание: возможно задать нужные параметры

Примечание: Возможность указывать кастомные сборки сознательно исключена. Проект ориентирован исключительно на использование актуальных официальных образов в целях безопасности и стабильности.

[!IMPORTANT] для безопасности в файле override блок для порта pgadmin закоментированы так как он необходим если не используется маршрутизация traefik

Настройка переменных окружения

Файл .env.example

В репозитории находится шаблон файла .env.example. Для настройки конфигурации создайте его копию с именем .env в той же директории, где находится файл docker-compose.yml.


Описание доступных переменных

Версии образов (Container Image Versions)

Примечание: Возможность указывать кастомные сборки сознательно исключена. Проект ориентирован исключительно на использование актуальных официальных образов в целях безопасности и стабильности. Если переменные закомментированы, Docker по умолчанию загрузит тег latest.

Локальные порты хоста (Local Service Ports)

[!IMPORTANT] Для обеспечения безопасности в файле docker-compose.override.yml блок портов для pgAdmin по умолчанию закомментирован. Прямая публикация порта требуется только в том случае, если вы не используете маршрутизацию через Traefik.

Настройка Production и Reverse Proxy (Traefik)

Deploy

Up stack as default with service pgAdmin.

docker compose --profile tools -p postgresql-stack up -d

Down stack as default with service pgAdmin.

docker compose --profile tools -p postgresql-stack down

Up stack as default without service pgAdmin, only base service postgresql.

docker compose -p postgresql-stack up -d

Down stack as default without service pgAdmin, only base service postgresql.

docker compose -p postgresql-stack down

[!IMPORTANT] 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 при запуске создаст абсолютно новый, пустой волум, а старый останется в системе.

⚠️ ВАЖНО: Безопасность и использование .env

В репозитории присутствует только файл .env.example — это шаблон для удобного запуска проекта.
Настоящий .env файл должен быть создан локально или на сервере вручную и никогда не храниться в публичном репозитории.

Рекомендации: - Скопируйте .env.example.env и заполните своими значениями. - Добавьте .env в .gitignore, чтобы исключить его из коммитов. - Никогда не публикуйте реальные пароли, токены и ключи в GitHub. - Доступ к Docker и серверу должен быть ограничен только администраторам. - Для CI/CD используйте встроенные механизмы secrets (например, GitHub Actions Secrets). - Помните: переменные окружения видны через docker inspect. Если требуется более высокий уровень защиты, используйте Docker Swarm/Kubernetes secrets или внешние менеджеры секретов.

Таким образом, проект безопасен как рецепт, но ответственность за конфиденциальность данных лежит на пользователе, который запускает его.

📜 Disclaimer

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 для подробностей.