-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
289 lines (233 loc) · 8.9 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
include .env
# Инициализация проекта
init:
# Создает файл .env, если он отсутствует, создает ссылку
@make env
# Строит и запускает контейнеры в фоновом режиме
docker compose up -d --build
# Устанавливает зависимости проекта
docker compose exec app composer install
# Устанавливает Filament
docker compose exec app php artisan filament:install --scaffold --tables --forms
# Очищает базу данных и запускает миграции
@make fresh
# Создает администратора
@make seed-admin
# Запускает воркеров в фоновом режиме
docker compose --profile workers up -d
sleep 5s
# Приостанавливает тестировочный супервайзер
@make stop-test-horizon
# Генерирует ключ приложения
docker compose exec app php artisan key:generate
# Создает символические ссылки для директории storage
docker compose exec app php artisan storage:link
# Устанавливает права доступа для директории storage
docker compose exec app chmod -R 777 storage bootstrap/cache
# Запуск контейнеров
up:
# Запускает все сервисы в фоновом режиме
docker compose --profile "*" up -d
sleep 5s
# Приостанавливает тестировочный супервайзер
@make stop-test-horizon
# Остановка контейнеров
stop:
docker compose stop
# Остановка и удаление контейнеров
down:
docker compose --profile "*" down --remove-orphans
# Остановка и удаление контейнеров с томами
down-v:
docker compose down --remove-orphans --volumes
# Удаление проекта
destroy:
# Останавливает и удаляет контейнеры, образы, тома и орфаны
docker compose --profile "*" down --rmi all --volumes --remove-orphans
# Перезапуск контейнеров
restart:
@make down
@make up
# Пересоздание проекта
remake:
@make destroy
@make init
# Запуск миграций
migrate:
docker compose exec app php artisan migrate
# Заполнение базы данных тестовыми данными
seed:
docker compose exec app php artisan db:seed
# Заполнение базы данных тестовыми данными, включая администратора
seed-admin:
docker compose exec app php artisan db:seed --class=AdminSeeder
# Очистка базы данных и запуск миграций
fresh:
docker compose exec app php artisan migrate:fresh
# Запуск тестов
test:
docker compose exec app php artisan test
# Вывод логов для всех контейнеров
logs:
docker compose logs
# Вывод логов для всех контейнеров с отслеживанием вывода
watch:
docker compose logs --follow
# Вывод логов для nginx
web-logs:
docker compose logs nginx
# Вывод логов для nginx с отслеживанием вывода
web-watch:
docker compose logs nginx --follow
# Перезагрузка конфигурации nginx
nginx-reload:
sudo docker compose exec nginx nginx -t && sudo docker compose exec nginx nginx -s reload
# Вывод логов для next.js
next-logs:
docker compose logs next
# Вывод логов для next.js с отслеживанием вывода
next-watch:
docker compose logs next --follow
# Перестройка приложения next.js
next-rebuild:
@make next-clear
docker compose exec next npm run build
# Очистка директории сборки next.js
next-clear:
rm -rf ./next/.next
# Вывод логов для контейнера app
app-logs:
docker compose logs app
# Вывод логов для контейнера app с отслеживанием вывода
app-watch:
docker compose logs app --follow
# Вывод логов для elasticsearch
es-logs:
docker compose logs elasticsearch
# Вывод логов для elasticsearch с отслеживанием вывода
es-watch:
docker compose logs elasticsearch --follow
# Вывод статуса Horizon
horizon-status:
docker compose exec horizon php artisan horizon:status
# Приостановка Horizon
horizon-pause:
docker compose exec horizon php artisan horizon:pause
# Возобновление работы Horizon
horizon-continue:
docker compose exec horizon php artisan horizon:continue
# Вывод логов Horizon
horizon-logs:
docker compose logs horizon
# Вывод логов Horizon с отслеживанием вывода
horizon-watch:
docker compose logs horizon --follow
# Приостанавливает тестировочный супервайзер
stop-test-horizon:
docker compose exec horizon php artisan horizon:pause-supervisor supervisor-test
# Вывод логов планировщика задач
schedule-logs:
docker compose logs schedule
# Вывод логов планировщика задач с отслеживанием вывода
schedule-watch:
docker compose logs schedule --follow
# Создание файла .env, если он отсутствует
env:
# Проверяет, существует ли файл .env
@if [ ! -f .env ]; then \
# Копирует файл .env.example в .env
cp .env.example .env; \
fi
# Установка переменных окружения
setenv:
# Пример:
# @make setenv APP_ENV=production
# Добавляет переменную окружения в файл .env
echo "export $1=$2" >> .env
# Открыть bash-консоль в контейнере app
bash:
docker compose exec app bash
# Открыть bash-консоль в контейнере next.js
next-bash:
docker compose exec next bash
# Открыть консоль MySQL
mysql:
docker compose exec db mysql -u root
# Сделать дамп базы данных MySQL
mysqldump:
docker compose exec db mysqldump -u root ${DB_DATABASE} > ${DB_DATABASE}.sql
# Открыть консоль PostgreSQL
psql:
sudo docker compose exec db psql -h ${DB_HOST} -p ${DB_PORT} -d ${DB_DATABASE} -U ${DB_USERNAME}
# Сделать дамп базы данных PostgreSQL
pgdump:
sudo docker compose exec db pg_dump -h ${DB_HOST} -p ${DB_PORT} -d ${DB_DATABASE} -U ${DB_USERNAME} > ${DB_DATABASE}.dump
# Сгенерировать секретный ключ JWT
jwt:
docker compose exec app php artisan jwt:secret
# Показать запущенные контейнеры
ps:
docker compose ps
# Откатить базу данных к начальному состоянию
rollback-test:
docker compose exec app php artisan migrate:fresh
docker compose exec app php artisan migrate:refresh
# Подготовить приложение к продакшену
prepare:
@make optimize
@make cache
# Очистить кэш и оптимизированные файлы
clear:
@make optimize-clear
@make cache-clear
# Оптимизировать приложение
optimize:
docker compose exec app php artisan optimize
# Очистить оптимизированные файлы
optimize-clear:
docker compose exec app php artisan optimize:clear
# Закешировать приложение
cache:
docker compose exec app composer dump-autoload -o
@make optimize
docker compose exec app php artisan event:cache
docker compose exec app php artisan view:cache
# Очистить кэш
cache-clear:
docker compose exec app composer clear-cache
@make optimize-clear
docker compose exec app php artisan event:clear
# Сгенерировать автозагрузчик Composer
dump-autoload:
docker compose exec app composer dump-autoload
# Связать файл .env с контейнерами Laravel и Next.js
env:
touch .env
rm -rf ./laravel/.env
rm -rf ./next/.env
ln .env ./laravel
ln .env ./next
# Открыть консоль Redis
redis:
docker compose exec redis redis-cli
# Проверить, работает ли приложение
check:
curl -s -o /dev/null -w "%{http_code}\n" http://localhost
# Переиндексировать ElasticSearch
elastic-reindex:
docker compose exec app php artisan search:reindex
# Создать резервную копию базы данных и файлов приложения
backup:
tar -czvf backups/$(shell date +"%d-%m-%Y-%H:%M:%S").tar.gz --exclude=backups/* docker/*
# Сгенерировать SSL-сертификаты
ssl:
docker compose exec nginx apt update
docker compose exec nginx apk add certbot certbot-nginx
docker compose exec nginx certbot --nginx
# Настроить брандмауэр UFW
ufw:
apt install ufw
ufw allow ssh
ufw allow http
ufw allow https
ufw enable