-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
161 lines (139 loc) · 4.24 KB
/
Makefile
File metadata and controls
161 lines (139 loc) · 4.24 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
# GameRequest Docker Management Makefile
.PHONY: help build up down logs clean dev prod backup restore health
# Default target
help:
@echo "🎮 GameRequest Docker Management"
@echo ""
@echo "📦 Basic Commands:"
@echo " build Build all containers"
@echo " up Start all services"
@echo " down Stop all services"
@echo " logs View logs (use SERVICE=name for specific service)"
@echo " clean Remove containers and volumes"
@echo ""
@echo "🔧 Development:"
@echo " dev Start in development mode"
@echo " dev-logs Follow development logs"
@echo ""
@echo "🚀 Production:"
@echo " prod Start production stack"
@echo " prod-full Start with all optional services"
@echo ""
@echo "📊 Monitoring:"
@echo " health Check application health"
@echo " status Show container status"
@echo " stats Show resource usage"
@echo ""
@echo "💾 Data Management:"
@echo " backup Create database backup"
@echo " restore Restore from backup (requires BACKUP_FILE=path)"
@echo " init-db Initialize/reset database schema"
@echo ""
@echo "Example usage:"
@echo " make up"
@echo " make logs SERVICE=ggrequestz"
@echo " make backup"
# Build containers
build:
docker-compose build
# Start services
up:
docker-compose up -d
# Stop services
down:
docker-compose down
# View logs
logs:
ifdef SERVICE
docker-compose logs -f $(SERVICE)
else
docker-compose logs -f
endif
# Clean up everything
clean:
docker-compose down -v --remove-orphans
docker system prune -f
# Development mode
dev:
docker-compose --env-file .env.dev up -d
dev-logs:
docker-compose --env-file .env.dev logs -f
# Production mode
prod:
docker-compose --env-file .env.docker -f docker-compose.yml -f docker-compose.production.yml up -d
# Production with all services
prod-full:
docker-compose --env-file .env.docker -f docker-compose.yml -f docker-compose.production.yml --profile notifications --profile proxy up -d
# Health check
health:
@echo "🏥 Checking application health..."
@curl -s http://localhost:3000/api/health | jq . || echo "❌ Health check failed"
# Container status
status:
docker-compose ps
# Resource usage
stats:
docker stats --no-stream
# Database backup
backup:
@echo "💾 Creating database backup..."
@mkdir -p backups
@docker-compose exec -T postgres pg_dump -U postgres ggrequestz > backups/backup_$(shell date +%Y%m%d_%H%M%S).sql
@echo "✅ Backup created in backups/ directory"
# Restore database
restore:
ifndef BACKUP_FILE
@echo "❌ Please specify BACKUP_FILE=path/to/backup.sql"
@exit 1
endif
@echo "🔄 Restoring database from $(BACKUP_FILE)..."
@cat $(BACKUP_FILE) | docker-compose exec -T postgres psql -U postgres -d ggrequestz
@echo "✅ Database restored"
# Initialize database schema
init-db:
@echo "🗄️ Initializing database schema..."
docker-compose exec ggrequestz node scripts/database/db-manager.js init
@echo "✅ Database schema initialized"
# PM2 management
pm2-status:
docker-compose exec ggrequestz pm2 status
pm2-logs:
docker-compose exec ggrequestz pm2 logs
pm2-restart:
docker-compose exec ggrequestz pm2 restart ggrequestz
# Setup for first time
setup:
@echo "🔧 Setting up GameRequest for first time..."
@if [ ! -f .env ]; then \
echo "📄 Copying environment template..."; \
cp .env.docker .env; \
echo "⚠️ Please edit .env with your configuration before running 'make up'"; \
else \
echo "✅ .env already exists"; \
fi
@echo "🏗️ Building containers..."
@$(MAKE) build
@echo ""
@echo "🎉 Setup complete! Next steps:"
@echo "1. Edit .env with your configuration"
@echo "2. Run: make up"
@echo "3. Run: make init-db"
@echo "4. Access: http://localhost:3000"
# Quick development setup
dev-setup:
@echo "🔧 Setting up development environment..."
@if [ ! -f .env ]; then \
cp .env.docker .env; \
echo "NODE_ENV=development" >> .env; \
echo "POSTGRES_PASSWORD=dev123" >> .env; \
echo "TYPESENSE_API_KEY=dev123" >> .env; \
echo "SESSION_SECRET=dev_session_secret_change_in_production" >> .env; \
fi
@$(MAKE) build
@$(MAKE) dev
@sleep 10
@$(MAKE) init-db
@echo "🎉 Development setup complete!"
@echo "🌐 Application: http://localhost:3000"
@echo "🔍 Typesense: http://localhost:8108"
@echo "🗄️ PostgreSQL: localhost:5432"