Всем привет, сегодня я хотел бы показать 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