Loading .env.example 0 → 100644 +24 −0 Original line number Diff line number Diff line PROJECT_CODE=template MODE=dev BASE_PHP_IMAGE_TAG=${PROJECT_CODE}-base-php DOCKER_COMPOSE_FILE=compose.${MODE}.yaml ###> APP ### INFRA_APP_CONTAINER_NAME=${PROJECT_CODE}-app INFRA_APP_PORT=8080 INFRA_APP_BASE_DIR=./app APP_APP_PORT=8080 ###< APP ### ###> DATABASE ### INFRA_DATABASE_CONTAINER_NAME=${PROJECT_CODE}-db INFRA_DATABASE_POSTGRES_VERSION=16-alpine3.18 INFRA_DATABASE_PORT=5432 APP_DATABASE_NAME=template APP_DATABASE_USER=admin APP_DATABASE_SECRET=secret APP_DATABASE_PORT=5432 ###< DATABASE ### .gitattributes 0 → 100644 +3 −0 Original line number Diff line number Diff line docker-compose.yml text eol=lf Dockerfile eol=lf *.sh text eol=lf No newline at end of file .gitignore 0 → 100644 +4 −0 Original line number Diff line number Diff line /.idea /var .env LICENSE.md 0 → 100644 +21 −0 Original line number Diff line number Diff line MIT License Copyright (c) 2019-2024 Othneil Drew Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Makefile 0 → 100644 +104 −0 Original line number Diff line number Diff line include .env .DEFAULT_GOAL:=help COMPOSE_FILE := ${DOCKER_COMPOSE_FILE} COMPOSE_PREFIX_CMD := DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 COMMAND ?= /bin/sh .PHONY: build build-no-chache up down ps logs logs-1000 logs-follow \ shell shell-root restart start stop rm images command command-root \ network-create build: ## Собрать приложение @echo -e "► \033[0;32mНачало сборки приложения\033[0;32m" @docker build -t ${BASE_PHP_IMAGE_TAG} -f ./docker/app/base.php.Dockerfile . @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} build --no-cache @echo -e "► \033[0;32mСборка приложения завершена\033[0;32m" build-no-cache: ## Собрать приложение без кэша @echo -e "► \033[0;32mНачало сборки приложения (без кэша)\033[0;32m" @docker build -t ${BASE_PHP_IMAGE_TAG} -f ./docker/app/base.php.Dockerfile --no-cache . @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} build --no-cache @echo -e "► \033[0;32mСборка приложения завершена\033[0;32m" up: ## Создать и запустить контейнеры @echo "► Создание и запуск контейнеров" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} up -d @echo "► Контейнеры созданы и запущены" down: ## Остановить и удалить контейнеры @echo "► Остановка и удаление контейнеров" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} down @echo "► Контейнеры остановлены и удалены" ps: ## Показать запущенные контейнеры @echo "► Список запущенных контейнеров" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} ps logs: ## Показать последние 100 записей логов @echo "Последние 100 записей логов" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} logs --tail 100 logs-1000: ## Показать последние 1000 записей логов @echo "► Последние 1000 записей логов" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} logs --tail 1000 logs-follow: ## Просмотр логов в реальном времени @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} logs --follow shell: ## Подключиться к PHP контейнеру @echo "► Подключение к PHP контейнеру" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} exec app /bin/sh shell-root: ## Подключиться к PHP контейнеру как root @echo -e "► Подключение к PHP контейнеру как root" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} exec -u root app /bin/sh restart: ## Перезапустить контейнеры @echo "► Перезапуск контейнеров" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} restart @echo "► Контейнеры перезапущены" start: ## Запустить созданные контейнеры @echo "► Запуск контейнеров" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} start @echo "► Контейнеры запущены" stop: ## Остановить запущенные контейнеры @echo "► Остановка контейнеров" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} stop @echo "► Контейнеры остановлены" images: ## Список образов @echo "► Список образов" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} images command: ## Выполнить команду в PHP контейнере (make command COMMAND=<команда>) @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} run --rm app ${COMMAND} command-root: ## Выполнить контейнер в PHP контейнере как root @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} run --rm -u root app ${COMMAND} rm: ## Удалить остановленные контейнеры @echo "► Удаление остановленных контейнеров" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} rm -f @echo "► Контейнеры удалены" cache-clear: ## Сбросить кэш приложения @echo "► Очистка кэша" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} run --rm app ./bin/console cache:clear @echo "► Кэш сброшен" network-create: ## Создать сеть (make network-create NETWORK_NAME=<название>) @echo "► Создание сети ${NETWORK_NAME}" @docker network create ${NETWORK_NAME} @echo "► Сеть ${NETWORK_NAME} создана" test: @echo "► Запуск тестов" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} run --rm app ./vendor/bin/phpunit help: ## Получить справку @echo -e "\nКоманды для упрощённой работы с Docker контейнерами" @echo -e "Для корректной работы необходим \033[0;32mDocker >= v27.3\033[0m" @awk 'BEGIN {FS = ":.*##"; printf "\nИспользование:\n make \033[36m<команда>\033[0m ENV=<prod|dev> (default: dev)\n\nДоступные команды:\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-18s\033[0m %s\n", $$1, $$2 }' $(MAKEFILE_LIST) No newline at end of file Loading
.env.example 0 → 100644 +24 −0 Original line number Diff line number Diff line PROJECT_CODE=template MODE=dev BASE_PHP_IMAGE_TAG=${PROJECT_CODE}-base-php DOCKER_COMPOSE_FILE=compose.${MODE}.yaml ###> APP ### INFRA_APP_CONTAINER_NAME=${PROJECT_CODE}-app INFRA_APP_PORT=8080 INFRA_APP_BASE_DIR=./app APP_APP_PORT=8080 ###< APP ### ###> DATABASE ### INFRA_DATABASE_CONTAINER_NAME=${PROJECT_CODE}-db INFRA_DATABASE_POSTGRES_VERSION=16-alpine3.18 INFRA_DATABASE_PORT=5432 APP_DATABASE_NAME=template APP_DATABASE_USER=admin APP_DATABASE_SECRET=secret APP_DATABASE_PORT=5432 ###< DATABASE ###
.gitattributes 0 → 100644 +3 −0 Original line number Diff line number Diff line docker-compose.yml text eol=lf Dockerfile eol=lf *.sh text eol=lf No newline at end of file
LICENSE.md 0 → 100644 +21 −0 Original line number Diff line number Diff line MIT License Copyright (c) 2019-2024 Othneil Drew Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Makefile 0 → 100644 +104 −0 Original line number Diff line number Diff line include .env .DEFAULT_GOAL:=help COMPOSE_FILE := ${DOCKER_COMPOSE_FILE} COMPOSE_PREFIX_CMD := DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 COMMAND ?= /bin/sh .PHONY: build build-no-chache up down ps logs logs-1000 logs-follow \ shell shell-root restart start stop rm images command command-root \ network-create build: ## Собрать приложение @echo -e "► \033[0;32mНачало сборки приложения\033[0;32m" @docker build -t ${BASE_PHP_IMAGE_TAG} -f ./docker/app/base.php.Dockerfile . @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} build --no-cache @echo -e "► \033[0;32mСборка приложения завершена\033[0;32m" build-no-cache: ## Собрать приложение без кэша @echo -e "► \033[0;32mНачало сборки приложения (без кэша)\033[0;32m" @docker build -t ${BASE_PHP_IMAGE_TAG} -f ./docker/app/base.php.Dockerfile --no-cache . @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} build --no-cache @echo -e "► \033[0;32mСборка приложения завершена\033[0;32m" up: ## Создать и запустить контейнеры @echo "► Создание и запуск контейнеров" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} up -d @echo "► Контейнеры созданы и запущены" down: ## Остановить и удалить контейнеры @echo "► Остановка и удаление контейнеров" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} down @echo "► Контейнеры остановлены и удалены" ps: ## Показать запущенные контейнеры @echo "► Список запущенных контейнеров" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} ps logs: ## Показать последние 100 записей логов @echo "Последние 100 записей логов" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} logs --tail 100 logs-1000: ## Показать последние 1000 записей логов @echo "► Последние 1000 записей логов" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} logs --tail 1000 logs-follow: ## Просмотр логов в реальном времени @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} logs --follow shell: ## Подключиться к PHP контейнеру @echo "► Подключение к PHP контейнеру" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} exec app /bin/sh shell-root: ## Подключиться к PHP контейнеру как root @echo -e "► Подключение к PHP контейнеру как root" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} exec -u root app /bin/sh restart: ## Перезапустить контейнеры @echo "► Перезапуск контейнеров" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} restart @echo "► Контейнеры перезапущены" start: ## Запустить созданные контейнеры @echo "► Запуск контейнеров" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} start @echo "► Контейнеры запущены" stop: ## Остановить запущенные контейнеры @echo "► Остановка контейнеров" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} stop @echo "► Контейнеры остановлены" images: ## Список образов @echo "► Список образов" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} images command: ## Выполнить команду в PHP контейнере (make command COMMAND=<команда>) @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} run --rm app ${COMMAND} command-root: ## Выполнить контейнер в PHP контейнере как root @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} run --rm -u root app ${COMMAND} rm: ## Удалить остановленные контейнеры @echo "► Удаление остановленных контейнеров" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} rm -f @echo "► Контейнеры удалены" cache-clear: ## Сбросить кэш приложения @echo "► Очистка кэша" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} run --rm app ./bin/console cache:clear @echo "► Кэш сброшен" network-create: ## Создать сеть (make network-create NETWORK_NAME=<название>) @echo "► Создание сети ${NETWORK_NAME}" @docker network create ${NETWORK_NAME} @echo "► Сеть ${NETWORK_NAME} создана" test: @echo "► Запуск тестов" @${COMPOSE_PREFIX_CMD} docker compose -f ${COMPOSE_FILE} run --rm app ./vendor/bin/phpunit help: ## Получить справку @echo -e "\nКоманды для упрощённой работы с Docker контейнерами" @echo -e "Для корректной работы необходим \033[0;32mDocker >= v27.3\033[0m" @awk 'BEGIN {FS = ":.*##"; printf "\nИспользование:\n make \033[36m<команда>\033[0m ENV=<prod|dev> (default: dev)\n\nДоступные команды:\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-18s\033[0m %s\n", $$1, $$2 }' $(MAKEFILE_LIST) No newline at end of file