Docker сборка для web-проектов | Nginx, PHP, PgSQL, PgAdmin, Redis, Grafana, Loki — PROG-TIME

Docker сборка для web-проектов | Nginx, PHP, PgSQL, PgAdmin, Redis, Grafana, Loki

08.01.2025
Содержание:

Всем привет, сегодня я хотел бы показать Docker сборку которую я использую для локальной разработки своих web проектов и ботов. Данная сборка включает в себя Nginx и PHP, PgSQL в качестве базы данных и PgAdmin для работы с БД через web интерфейс. Для работы с кэшем и очередями используется Redis. А для логирования и аналитики используется Grafana и Loki.

Все материалы находятся тут — https://github.com/prog-time/docker-web-template-v1

Директория docker

Директория docker содержит конфигурационные файлы всех сервисов + pre_push и pre_commit скрипты.

В docker/git размещаются pre_push и pre_commit скрипты для проекта размещённого в www/public, а в docker/git_docker — скрипты относящиеся к самой сборке.

Скрипты pre_push и pre_commit для проекта включают в себя проверки соответствия PSR стандартам, поиск уязвимостей и ошибок, а также запуск Unit Tests.

Pre_push и pre_commit для docker проверяют целостность сборки и наличие ошибок при разворачивание проекта.

Дополнительно можно настроить конфигурацию для Nginx или PHP.

Директория files

В files размещаются файлы которые нужно перенести в www/public при первой сборке проекта. Здесь я разместил индексный файл и конфигурационные файлы для различных библиотек.

Это сделано чтобы все проекты соответствовали одним стандартам.

Dockerfile

Dockerfile содержит инструкции для установки базовых модулей, включая: Curl, nodejs npm и composer.

start_project.sh

Стартовый файл содержит инструкции для переноса файлов из директории files в www/public, установку необходимых composer зависимостей, инициализацию git в проекте и в докер сборке, а также перенос pre_push и pre_commit скриптов.

Запуск сборки

Для старта нового проекта необходимо запустить команду, которая перенесёт файлы из files в www/public и развернёт Docker сборку.

sh start_project.sh && docker-compose up -d --build

Или запустить сборку стардартным способом, без переноса файлов.

docker-compose up -d --build