-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
206 lines (159 loc) · 5.68 KB
/
Makefile
File metadata and controls
206 lines (159 loc) · 5.68 KB
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
# MicroHelium Makefile
# Docker commands for development and production
.PHONY: help build up down restart logs shell migrate seed fresh test lint format
# Default target
help:
@echo "MicroHelium Docker Commands"
@echo ""
@echo "Setup:"
@echo " make setup - Initial project setup"
@echo " make build - Build Docker images"
@echo " make up - Start all containers"
@echo " make down - Stop all containers"
@echo " make restart - Restart all containers"
@echo ""
@echo "Development:"
@echo " make dev - Start with development tools (Vite, Mailpit)"
@echo " make logs - View container logs"
@echo " make shell - Open shell in app container"
@echo " make shell-db - Open MySQL shell"
@echo " make shell-redis - Open Redis CLI"
@echo ""
@echo "Laravel:"
@echo " make migrate - Run database migrations"
@echo " make seed - Run database seeders"
@echo " make fresh - Fresh migrate with seeders"
@echo " make key - Generate application key"
@echo " make cache - Clear all caches"
@echo " make optimize - Optimize application"
@echo ""
@echo "Queue:"
@echo " make queue - Start queue worker"
@echo " make judge - Start auto-judge worker"
@echo ""
@echo "Testing:"
@echo " make test - Run PHPUnit tests"
@echo " make lint - Run PHP linter"
@echo " make format - Format code with Pint"
@echo ""
@echo "Production:"
@echo " make prod - Build for production"
@echo " make prod-up - Start production containers"
# =============================================================================
# Setup
# =============================================================================
setup: build
@echo "Creating .env file..."
@cp -n .env.docker .env 2>/dev/null || true
@echo "Starting containers..."
@docker compose up -d db redis
@echo "Waiting for database..."
@sleep 10
@docker compose up -d
@echo "Generating application key..."
@docker compose exec app php artisan key:generate
@echo "Running migrations..."
@docker compose exec app php artisan migrate --force
@echo "Creating storage link..."
@docker compose exec app php artisan storage:link
@echo ""
@echo "Setup complete! Access the application at http://localhost:8000"
build:
@docker compose build
up:
@docker compose up -d
down:
@docker compose down
restart: down up
# =============================================================================
# Development
# =============================================================================
dev:
@docker compose --profile dev up -d
dev-tools:
@docker compose --profile dev --profile tools up -d
logs:
@docker compose logs -f
logs-app:
@docker compose logs -f app
logs-queue:
@docker compose logs -f queue
logs-judge:
@docker compose logs -f autojudge
shell:
@docker compose exec app sh
shell-root:
@docker compose exec -u root app sh
shell-db:
@docker compose exec db mysql -u microhelium -psecret microhelium
shell-redis:
@docker compose exec redis redis-cli
# =============================================================================
# Laravel Commands
# =============================================================================
migrate:
@docker compose exec app php artisan migrate
seed:
@docker compose exec app php artisan db:seed
fresh:
@docker compose exec app php artisan migrate:fresh --seed
key:
@docker compose exec app php artisan key:generate
cache:
@docker compose exec app php artisan cache:clear
@docker compose exec app php artisan config:clear
@docker compose exec app php artisan route:clear
@docker compose exec app php artisan view:clear
optimize:
@docker compose exec app php artisan optimize
@docker compose exec app php artisan view:cache
@docker compose exec app php artisan event:cache
tinker:
@docker compose exec app php artisan tinker
# =============================================================================
# Queue & Judge
# =============================================================================
queue:
@docker compose exec app php artisan queue:work --verbose
queue-restart:
@docker compose exec app php artisan queue:restart
judge:
@docker compose exec autojudge php artisan autojudge:start --sleep=5
# =============================================================================
# Testing & Code Quality
# =============================================================================
test:
@docker compose exec app php artisan test
test-coverage:
@docker compose exec app php artisan test --coverage
lint:
@docker compose exec app ./vendor/bin/pint --test
format:
@docker compose exec app ./vendor/bin/pint
# =============================================================================
# Assets
# =============================================================================
npm-install:
@docker compose exec node npm install
npm-dev:
@docker compose exec node npm run dev
npm-build:
@docker compose exec node npm run build
# =============================================================================
# Production
# =============================================================================
prod:
@docker compose -f docker-compose.yml -f docker-compose.prod.yml build
prod-up:
@docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
prod-down:
@docker compose -f docker-compose.yml -f docker-compose.prod.yml down
# =============================================================================
# Cleanup
# =============================================================================
clean:
@docker compose down -v --remove-orphans
@docker system prune -f
clean-all:
@docker compose down -v --remove-orphans --rmi all
@docker system prune -af --volumes