Makefile 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. # Environment section -----------------------------------------------------
  2. ifneq (,$(wildcard ./.env))
  3. include .env
  4. $(eval export $(shell sed -ne 's/ *#.*$$//; /./ s/=.*$$// p' .env))
  5. # Create frontend/.env file
  6. # $(shell export WS_PORT=$(WS_PORT) ;\
  7. # export WEB_PORT=$(WEB_PORT) ;\
  8. # export APP_ADDR=$(APP_ADDR) ;\
  9. # awk '!/^ *#/ && NF' .env | grep FRONTEND_ | sed 's/FRONTEND_//' | envsubst > frontend/.env)
  10. endif
  11. appName = ${COMPOSE_PROJECT_NAME}
  12. ifeq ($(appName),)
  13. appName = strprfcrm
  14. endif
  15. args = $(filter-out $@,$(MAKECMDGOALS))
  16. # Docker section -----------------------------------------------------
  17. # uid and group of current user
  18. $(eval export UID=$(shell id -u))
  19. $(eval export GID=$(shell id -g))
  20. ifneq ("$(wildcard docker-compose.local.yml)","")
  21. compose = docker compose -f docker-compose.yml -f docker-compose.local.yml -p $(appName)
  22. compose-debug = docker compose -f docker-compose.yml -f docker-compose.local.yml -f docker-compose.debug.yml -p $(appName)
  23. else
  24. compose = docker compose -f docker-compose.yml -p $(appName)
  25. compose-debug = docker compose -f docker-compose.yml -f docker-compose.debug.yml -p $(appName)
  26. endif
  27. get_container_name = $(shell docker inspect -f '{{.Name}}' $(shell $(compose) ps -q $(1)) | sed -e 's~^/~~' | tr -d ' ')
  28. message = @echo "\n========================================\n$(1)\n========================================\n"
  29. #
  30. # Containers
  31. #
  32. application = docker exec -it $(call get_container_name, "app")
  33. queue = docker exec -it $(call get_container_name, "app-queue")
  34. websocket = docker exec -it $(call get_container_name, "websocket")
  35. webserver = docker exec -it $(call get_container_name, "webserver")
  36. mysql = docker exec -it $(call get_container_name, "db")
  37. # Commands section -----------------------------------------------------
  38. .DEFAULT_GOAL := help
  39. .PHONY: help
  40. help:
  41. @grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) \
  42. | sed -n 's/^\(.*\): \(.*\)##\(.*\)/\1 - \3/p' \
  43. | column -t -s ' '
  44. install: up-build composer-install db-migrate db-seed frontend-build ## Установка приложения
  45. $(call message,"The application was successfully installed!")
  46. upgrade: stop pull up-rebuild composer-install db-migrate frontend-build ## Обновление приложения
  47. $(call message,"The application was successfully updated!")
  48. full-upgrade: stop pull up-rebuild composer-install db-migrate-refresh frontend-build ## Обновление приложения и пересоздание БД
  49. $(call message,"The application was successfully updated! Database rebuilt!")
  50. up: ## Запуск проекта
  51. $(compose) up -d
  52. up-debug: ## Запуск проекта в режиме отладки
  53. $(compose-debug) up -d
  54. remove:
  55. $(compose) rm -f -s -v
  56. pull:
  57. $(compose) pull
  58. update:
  59. pull up
  60. stop:
  61. $(compose-debug) stop
  62. rm:
  63. $(compose) rm
  64. up-build:
  65. $(compose) up --build -d
  66. up-rebuild: ## Перестройка проекта
  67. $(compose) up --build --force-recreate -d
  68. ps: ## Список запущенных контейнеров
  69. $(compose) ps
  70. frontend-build: ## Перестроить фронт приложения
  71. $(webserver) sh -c 'npm install && npm run build'
  72. composer: ## Запуск composer
  73. $(application) composer $(args)
  74. composer-require: ## Добавление пакета
  75. $(application) composer require $(args)
  76. composer-install: ## Установка пакетов
  77. $(application) composer install
  78. composer-regenerate: ## Перестройка пакетов
  79. $(application) composer dump-autoload
  80. db-migrate: ## Применение миграций
  81. $(application) php artisan migrate
  82. db-seed: ## Запуск сидеров
  83. $(application) php artisan db:seed
  84. db-rollback: ## Откат последней миграций
  85. $(application) php artisan migrate:rollback
  86. db-migrate-refresh: ## Применение миграций с очисткой БД
  87. $(application) php artisan migrate:fresh --seed
  88. application: ## Консоль приложения
  89. $(application) bash
  90. pa: ## Консоль приложения
  91. $(application) php artisan ${args}
  92. route-list: ## Список маршрутов
  93. $(application) php artisan route:list ${args}
  94. application-log: ## Лог выполнения задач
  95. $(compose) logs app -f
  96. queue: ## Консоль выполненных задач
  97. $(queue) bash
  98. queue-run: ## Запуск текущих задач
  99. $(compose) run --rm app-queue php artisan queue:work --once
  100. queue-run-debug:
  101. $(compose-debug) run --rm app-queue php artisan queue:work --once
  102. queue-log: ## Лог приложения
  103. $(compose) logs app-queue -f
  104. websocket: ## Консоль приложения websocket
  105. $(websocket) bash
  106. websocket-log: ## Лог приложения websocket
  107. $(compose) logs websocket -f
  108. webserver: ## Консоль приложения webserver
  109. $(webserver) sh
  110. webserver-log: ## Лог приложения webserver
  111. $(compose) logs webserver -f
  112. mysql: ## Консоль приложения mysql
  113. $(mysql) bash
  114. log: ## Лог контейнеров
  115. $(compose) logs -f
  116. # Remove error message about lacking rules for targets' parameters
  117. %:
  118. @: