|
@@ -0,0 +1,169 @@
|
|
|
|
|
+# Environment section -----------------------------------------------------
|
|
|
|
|
+
|
|
|
|
|
+ifneq (,$(wildcard ./.env))
|
|
|
|
|
+ include .env
|
|
|
|
|
+ $(eval export $(shell sed -ne 's/ *#.*$$//; /./ s/=.*$$// p' .env))
|
|
|
|
|
+ # Create frontend/.env file
|
|
|
|
|
+# $(shell export WS_PORT=$(WS_PORT) ;\
|
|
|
|
|
+# export WEB_PORT=$(WEB_PORT) ;\
|
|
|
|
|
+# export APP_ADDR=$(APP_ADDR) ;\
|
|
|
|
|
+# awk '!/^ *#/ && NF' .env | grep FRONTEND_ | sed 's/FRONTEND_//' | envsubst > frontend/.env)
|
|
|
|
|
+endif
|
|
|
|
|
+
|
|
|
|
|
+appName = ${COMPOSE_PROJECT_NAME}
|
|
|
|
|
+ifeq ($(appName),)
|
|
|
|
|
+ appName = strprfcrm
|
|
|
|
|
+endif
|
|
|
|
|
+args = $(filter-out $@,$(MAKECMDGOALS))
|
|
|
|
|
+
|
|
|
|
|
+# Docker section -----------------------------------------------------
|
|
|
|
|
+
|
|
|
|
|
+# uid and group of current user
|
|
|
|
|
+$(eval export UID=$(shell id -u))
|
|
|
|
|
+$(eval export GID=$(shell id -g))
|
|
|
|
|
+
|
|
|
|
|
+ifneq ("$(wildcard docker-compose.local.yml)","")
|
|
|
|
|
+ compose = docker compose -f docker-compose.yml -f docker-compose.local.yml -p $(appName)
|
|
|
|
|
+ compose-debug = docker compose -f docker-compose.yml -f docker-compose.local.yml -f docker-compose.debug.yml -p $(appName)
|
|
|
|
|
+else
|
|
|
|
|
+ compose = docker compose -f docker-compose.yml -p $(appName)
|
|
|
|
|
+ compose-debug = docker compose -f docker-compose.yml -f docker-compose.debug.yml -p $(appName)
|
|
|
|
|
+endif
|
|
|
|
|
+get_container_name = $(shell docker inspect -f '{{.Name}}' $(shell $(compose) ps -q $(1)) | sed -e 's~^/~~' | tr -d ' ')
|
|
|
|
|
+message = @echo "\n========================================\n$(1)\n========================================\n"
|
|
|
|
|
+
|
|
|
|
|
+#
|
|
|
|
|
+# Containers
|
|
|
|
|
+#
|
|
|
|
|
+application = docker exec -it $(call get_container_name, "app")
|
|
|
|
|
+queue = docker exec -it $(call get_container_name, "app-queue")
|
|
|
|
|
+websocket = docker exec -it $(call get_container_name, "websocket")
|
|
|
|
|
+webserver = docker exec -it $(call get_container_name, "webserver")
|
|
|
|
|
+mysql = docker exec -it $(call get_container_name, "db")
|
|
|
|
|
+
|
|
|
|
|
+# Commands section -----------------------------------------------------
|
|
|
|
|
+
|
|
|
|
|
+.DEFAULT_GOAL := help
|
|
|
|
|
+.PHONY: help
|
|
|
|
|
+
|
|
|
|
|
+help:
|
|
|
|
|
+ @grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) \
|
|
|
|
|
+ | sed -n 's/^\(.*\): \(.*\)##\(.*\)/\1 - \3/p' \
|
|
|
|
|
+ | column -t -s ' '
|
|
|
|
|
+
|
|
|
|
|
+install: up-build composer-install db-migrate db-seed frontend-build ## Установка приложения
|
|
|
|
|
+ $(call message,"The application was successfully installed!")
|
|
|
|
|
+
|
|
|
|
|
+upgrade: stop pull up-rebuild composer-install db-migrate frontend-build ## Обновление приложения
|
|
|
|
|
+ $(call message,"The application was successfully updated!")
|
|
|
|
|
+
|
|
|
|
|
+full-upgrade: stop pull up-rebuild composer-install db-migrate-refresh frontend-build ## Обновление приложения и пересоздание БД
|
|
|
|
|
+ $(call message,"The application was successfully updated! Database rebuilded!")
|
|
|
|
|
+
|
|
|
|
|
+up: ## Запуск проекта
|
|
|
|
|
+ $(compose) up -d
|
|
|
|
|
+
|
|
|
|
|
+up-debug: ## Запуск проекта в режиме отладки
|
|
|
|
|
+ $(compose-debug) up -d
|
|
|
|
|
+
|
|
|
|
|
+remove:
|
|
|
|
|
+ $(compose) rm -f -s -v
|
|
|
|
|
+
|
|
|
|
|
+pull:
|
|
|
|
|
+ $(compose) pull
|
|
|
|
|
+
|
|
|
|
|
+update: pull up
|
|
|
|
|
+
|
|
|
|
|
+stop:
|
|
|
|
|
+ $(compose) stop
|
|
|
|
|
+
|
|
|
|
|
+rm:
|
|
|
|
|
+ $(compose) rm
|
|
|
|
|
+
|
|
|
|
|
+up-build:
|
|
|
|
|
+ $(compose) up --build -d
|
|
|
|
|
+
|
|
|
|
|
+up-rebuild: ## Перестройка проекта
|
|
|
|
|
+ $(compose) up --build --force-recreate -d
|
|
|
|
|
+
|
|
|
|
|
+ps: ## Список запущенных контейнеров
|
|
|
|
|
+ $(compose) ps
|
|
|
|
|
+
|
|
|
|
|
+#icons: ## Перестроить иконки
|
|
|
|
|
+# $(webserver) sh -c 'apk add yarn && cd /var/frontend && yarn run icons'
|
|
|
|
|
+#
|
|
|
|
|
+#frontend-run: ## Перестроить фронт приложения
|
|
|
|
|
+# $(webserver) sh -c 'apk add yarn && cd /var/frontend && yarn run build'
|
|
|
|
|
+#
|
|
|
|
|
+#frontend-build: ## Перестроить фронт приложения
|
|
|
|
|
+# $(webserver) sh -c 'apk add yarn && cd /var/frontend && yarn install && yarn run build'
|
|
|
|
|
+
|
|
|
|
|
+composer: ## Запуск composer
|
|
|
|
|
+ $(application) composer $(args)
|
|
|
|
|
+
|
|
|
|
|
+composer-require: ## Добавление пакета
|
|
|
|
|
+ $(application) composer require $(args)
|
|
|
|
|
+
|
|
|
|
|
+composer-install: ## Установка пакетов
|
|
|
|
|
+ $(application) composer install
|
|
|
|
|
+
|
|
|
|
|
+composer-regenerate: ## Перестройка пакетов
|
|
|
|
|
+ $(application) composer dump-autoload
|
|
|
|
|
+
|
|
|
|
|
+db-migrate: ## Применение миграций
|
|
|
|
|
+ $(application) php artisan migrate
|
|
|
|
|
+
|
|
|
|
|
+db-seed: ## Запуск сидеров
|
|
|
|
|
+ $(application) php artisan db:seed
|
|
|
|
|
+
|
|
|
|
|
+db-rollback: ## Откат последней миграций
|
|
|
|
|
+ $(application) php artisan migrate:rollback
|
|
|
|
|
+
|
|
|
|
|
+db-migrate-refresh: ## Применение миграций с очисткой БД
|
|
|
|
|
+ $(application) php artisan migrate:fresh --seed
|
|
|
|
|
+
|
|
|
|
|
+application: ## Консоль приложения
|
|
|
|
|
+ $(application) bash
|
|
|
|
|
+
|
|
|
|
|
+pa: ## Консоль приложения
|
|
|
|
|
+ $(application) php artisan ${args}
|
|
|
|
|
+
|
|
|
|
|
+routes: ## Список маршрутов
|
|
|
|
|
+ application-artisan route:list ${args}
|
|
|
|
|
+
|
|
|
|
|
+application-log: ## Лог выполнения задач
|
|
|
|
|
+ $(compose) logs app -f
|
|
|
|
|
+
|
|
|
|
|
+queue: ## Консоль выполненных задач
|
|
|
|
|
+ $(queue) bash
|
|
|
|
|
+
|
|
|
|
|
+queue-run: ## Запуск текущих задач
|
|
|
|
|
+ $(compose) run --rm app-queue php artisan queue:work --once
|
|
|
|
|
+
|
|
|
|
|
+queue-run-debug:
|
|
|
|
|
+ $(compose-debug) run --rm app-queue php artisan queue:work --once
|
|
|
|
|
+
|
|
|
|
|
+queue-log: ## Лог приложения
|
|
|
|
|
+ $(compose) logs app-queue -f
|
|
|
|
|
+
|
|
|
|
|
+websocket: ## Консоль приложения websocket
|
|
|
|
|
+ $(websocket) bash
|
|
|
|
|
+
|
|
|
|
|
+websocket-log: ## Лог приложения websocket
|
|
|
|
|
+ $(compose) logs websocket -f
|
|
|
|
|
+
|
|
|
|
|
+webserver: ## Консоль приложения webserver
|
|
|
|
|
+ $(webserver) sh
|
|
|
|
|
+
|
|
|
|
|
+webserver-log: ## Лог приложения webserver
|
|
|
|
|
+ $(compose) logs webserver -f
|
|
|
|
|
+
|
|
|
|
|
+mysql: ## Консоль приложения mysql
|
|
|
|
|
+ $(mysql) bash
|
|
|
|
|
+
|
|
|
|
|
+log: ## Лог контейнеров
|
|
|
|
|
+ $(compose) logs -f
|
|
|
|
|
+
|
|
|
|
|
+# Remove error message about lacking rules for targets' parameters
|
|
|
|
|
+%:
|
|
|
|
|
+ @:
|