forked from adocasts/building-with-adonisjs-and-inertia
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTaskfile.yml
More file actions
183 lines (150 loc) · 4.92 KB
/
Taskfile.yml
File metadata and controls
183 lines (150 loc) · 4.92 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
# https://taskfile.dev
version: '3'
vars:
PROJECT_NAME: building-with-adonisjs-and-inertia
DEV_COMPOSE_FILE: docker/docker-compose.dev.yml
PROD_COMPOSE_FILE: docker/docker-compose.prod.yml
PROD_ENV_FILE: .env.production
tasks:
default:
desc: "Show available tasks"
cmds:
- task --list
silent: true
# Development Environment
dev:up:
desc: "Start development environment"
cmds:
- docker compose -f {{.DEV_COMPOSE_FILE}} up
dev:up:build:
desc: "Start development environment with build"
cmds:
- docker compose -f {{.DEV_COMPOSE_FILE}} up --build
dev:up:detached:
desc: "Start development environment in background"
cmds:
- docker compose -f {{.DEV_COMPOSE_FILE}} up -d
dev:down:
desc: "Stop development environment"
cmds:
- docker compose -f {{.DEV_COMPOSE_FILE}} down
dev:restart:
desc: "Restart development environment"
cmds:
- task: dev:down
- task: dev:up
dev:logs:
desc: "Show development logs"
cmds:
- docker compose -f {{.DEV_COMPOSE_FILE}} logs -f
dev:logs:app:
desc: "Show app logs only"
cmds:
- docker compose -f {{.DEV_COMPOSE_FILE}} logs -f app
dev:shell:
desc: "Access development container shell"
cmds:
- docker compose -f {{.DEV_COMPOSE_FILE}} exec app sh
dev:cmd:
desc: "Run command in development container (usage: task dev:cmd -- npm run test)"
cmds:
- docker compose -f {{.DEV_COMPOSE_FILE}} exec app {{.CLI_ARGS}}
# Production Environment
prod:setup:
desc: "Setup production environment file"
cmds:
- |
if [ ! -f {{.PROD_ENV_FILE}} ]; then
cp .env.prod {{.PROD_ENV_FILE}}
echo "Created {{.PROD_ENV_FILE}} - please edit with your production values"
else
echo "{{.PROD_ENV_FILE}} already exists"
fi
prod:up:
desc: "Start production environment"
deps: [prod:setup]
cmds:
- docker compose -f {{.PROD_COMPOSE_FILE}} --env-file {{.PROD_ENV_FILE}} up -d
prod:up:build:
desc: "Start production environment with build"
deps: [prod:setup]
cmds:
- docker compose -f {{.PROD_COMPOSE_FILE}} --env-file {{.PROD_ENV_FILE}} up -d --build
prod:down:
desc: "Stop production environment"
cmds:
- docker compose -f {{.PROD_COMPOSE_FILE}} down
prod:restart:
desc: "Restart production environment"
cmds:
- task: prod:down
- task: prod:up
prod:logs:
desc: "Show production logs"
cmds:
- docker compose -f {{.PROD_COMPOSE_FILE}} logs -f
prod:logs:app:
desc: "Show production app logs only"
cmds:
- docker compose -f {{.PROD_COMPOSE_FILE}} logs -f app
prod:shell:
desc: "Access production container shell"
cmds:
- docker compose -f {{.PROD_COMPOSE_FILE}} exec app sh
prod:cmd:
desc: "Run command in production container"
cmds:
- docker compose -f {{.PROD_COMPOSE_FILE}} exec app {{.CLI_ARGS}}
# Database Management
db:migrate:dev:
desc: "Run database migrations in development"
cmds:
- docker compose -f {{.DEV_COMPOSE_FILE}} exec app node ace migration:run
db:migrate:prod:
desc: "Run database migrations in production"
cmds:
- docker compose -f {{.PROD_COMPOSE_FILE}} exec app node ace migration:run
db:seed:dev:
desc: "Seed database in development"
cmds:
- docker compose -f {{.DEV_COMPOSE_FILE}} exec app node ace db:seed
db:reset:dev:
desc: "Reset development database"
cmds:
- docker compose -f {{.DEV_COMPOSE_FILE}} exec app node ace migration:reset
- docker compose -f {{.DEV_COMPOSE_FILE}} exec app node ace migration:run
- docker compose -f {{.DEV_COMPOSE_FILE}} exec app node ace db:seed
# Testing
test:dev:
desc: "Run tests in development environment"
cmds:
- docker compose -f {{.DEV_COMPOSE_FILE}} exec app npm test
test:prod:
desc: "Run tests in production environment"
cmds:
- docker compose -f {{.PROD_COMPOSE_FILE}} exec app npm test
# Utility Tasks
clean:volumes:
desc: "Clean Docker volumes (WARNING: This will delete all data)"
prompt: "This will delete all Docker volumes and data. Are you sure?"
cmds:
- docker compose -f {{.DEV_COMPOSE_FILE}} down --volumes
- docker compose -f {{.PROD_COMPOSE_FILE}} down --volumes
- docker volume prune -f
status:
desc: "Show Docker container status"
cmds:
- echo "=== Development Environment ==="
- docker compose -f {{.DEV_COMPOSE_FILE}} ps
- echo ""
- echo "=== Production Environment ==="
- docker compose -f {{.PROD_COMPOSE_FILE}} ps
# Health Checks
health:dev:
desc: "Check development environment health"
cmds:
- curl -f http://localhost:3333/health || echo "Development app not responding"
health:prod:
desc: "Check production environment health"
cmds:
- curl -f http://localhost:3333/health || echo "Production app not responding"