-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
162 lines (133 loc) · 4.89 KB
/
Copy pathMakefile
File metadata and controls
162 lines (133 loc) · 4.89 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
.PHONY: help dev prod deploy-dev deploy-prod backup restore docker-build docker-up docker-down docker-logs docker-ps docker-clean docker-db-migrate docker-db-seed docker-test docker-shell-backend docker-shell-frontend docker-shell-postgres docker-shell-redis
help:
@echo "IntervAI - 部署和管理命令"
@echo "=================================="
@echo ""
@echo "快速部署 (推荐):"
@echo " make dev 开发环境一键部署"
@echo " make prod 生产环境一键部署"
@echo " make deploy-dev 开发环境部署(完整)"
@echo " make deploy-prod 生产环境部署(带备份)"
@echo ""
@echo "数据库管理:"
@echo " make backup 备份数据库"
@echo " make restore FILE=<file> 恢复数据库"
@echo " make docker-db-migrate 运行数据库迁移"
@echo " make docker-db-seed 填充初始数据"
@echo ""
@echo "Docker 基础操作:"
@echo " make docker-build 构建 Docker 镜像"
@echo " make docker-up 启动所有服务"
@echo " make docker-down 停止所有服务"
@echo " make docker-clean 删除所有容器和数据卷"
@echo ""
@echo "监控和日志:"
@echo " make docker-ps 显示运行中的容器"
@echo " make docker-logs 查看所有服务日志"
@echo " make docker-logs-backend 查看后端日志"
@echo " make docker-logs-frontend 查看前端日志"
@echo ""
@echo "容器访问:"
@echo " make docker-shell-backend 进入后端容器"
@echo " make docker-shell-frontend 进入前端容器"
@echo " make docker-shell-postgres 进入 PostgreSQL 容器"
@echo " make docker-shell-redis 进入 Redis 容器"
@echo ""
@echo "测试:"
@echo " make docker-test 运行后端测试"
@echo ""
# 快速部署命令
dev:
@echo "开发环境一键部署..."
./deployment/scripts/deploy.sh --env dev
prod:
@echo "生产环境一键部署..."
./deployment/scripts/deploy.sh --env prod --backup
deploy-dev:
@echo "开发环境完整部署..."
./deployment/scripts/deploy.sh --env dev
deploy-prod:
@echo "生产环境完整部署(带备份)..."
./deployment/scripts/deploy.sh --env prod --backup
# 数据库管理
backup:
@echo "备份数据库..."
./deployment/scripts/backup-database.sh
restore:
@echo "恢复数据库..."
@if [ -z "$(FILE)" ]; then \
echo "错误: 请指定备份文件"; \
echo "用法: make restore FILE=interview_ai_20231201_120000.sql.gz"; \
exit 1; \
fi
./deployment/scripts/restore-database.sh $(FILE)
docker-build:
@echo "Building Docker images..."
docker-compose build
docker-up:
@echo "Starting all services..."
docker-compose up -d
@echo "Services started. Waiting for health checks..."
@sleep 5
@docker-compose ps
docker-down:
@echo "Stopping all services..."
docker-compose down
docker-clean:
@echo "Removing all containers and volumes..."
docker-compose down -v
@echo "Cleanup complete"
docker-ps:
@docker-compose ps
docker-logs:
docker-compose logs -f
docker-logs-backend:
docker-compose logs -f backend
docker-logs-frontend:
docker-compose logs -f frontend
docker-logs-postgres:
docker-compose logs -f postgres
docker-logs-redis:
docker-compose logs -f redis
docker-db-migrate:
@echo "Running database migrations..."
docker-compose exec backend npx prisma migrate deploy
docker-db-seed:
@echo "Seeding database..."
docker-compose exec backend npx prisma db seed
docker-test:
@echo "Running tests..."
docker-compose exec backend npm run test
docker-shell-backend:
docker-compose exec backend sh
docker-shell-frontend:
docker-compose exec frontend sh
docker-shell-postgres:
docker-compose exec postgres psql -U interview_ai_user -d interview_ai
docker-shell-redis:
docker-compose exec redis redis-cli
docker-health-check:
@echo "Checking service health..."
@echo "Backend: $$(docker-compose exec backend wget --quiet --tries=1 --spider http://localhost:3000/health && echo 'OK' || echo 'FAILED')"
@echo "Frontend: $$(docker-compose exec frontend wget --quiet --tries=1 --spider http://localhost/health && echo 'OK' || echo 'FAILED')"
@echo "PostgreSQL: $$(docker-compose exec postgres pg_isready -U interview_ai_user -d interview_ai && echo 'OK' || echo 'FAILED')"
@echo "Redis: $$(docker-compose exec redis redis-cli ping && echo 'OK' || echo 'FAILED')"
docker-backup-db:
@echo "使用新的备份脚本..."
./deployment/scripts/backup-database.sh
db:
@echo "使用新的恢复脚本..."
@echo "可用备份: "
@ls -lh backups/postgres/ 2>/dev/null || echo "未找到"
@read -p "输入备份文件名: " backup_file; \
./deployment/scripts/resile
docker-rebuild:
@echo "Rebuilding and restarting services..."
docker-compose down
docker-compose build --no-cache
docker-compose up -d
@echo "Services rebuilt and started"
docker-prune:
@echo "Pruning unused Docker resources..."
docker system prune -a --volumes -f
@echo "Prune complete"