# ============================================================ # OCDP - Open Cloud Development Platform # Makefile for Docker Compose deployment # ============================================================ SHELL := /bin/bash # ============================================================ # Configuration - Modify these for your environment # ============================================================ # Server IP for external access (客户端访问IP) SERVER_IP ?= 10.6.80.114 # Backend configuration BACKEND_PORT ?= 8080 JWT_SECRET ?= change-me-in-production ENCRYPTION_KEY ?= change-me-32-bytes-long-key-here DATABASE_URL ?= postgresql://postgres:postgres@postgres:5432/ocdp?sslmode=disable ADAPTER_MODE ?= production # Allowed CORS origins (for external access) # 格式: http://IP:端口,多个用逗号分隔 ALLOWED_ORIGINS ?= http://$(SERVER_IP),http://$(SERVER_IP):3000 # Compose files COMPOSE_FILES := -f docker-compose.yml -f backend/docker-compose.yml # Database init SQL path (relative to project root) INIT_DB_SQL_PATH ?= ./backend/scripts/init-db.sql # ============================================================ # Production Commands (Docker Compose) # ============================================================ .PHONY: up down restart clean logs logs-backend logs-frontend status help # Start all services up: @echo "============================================" @echo "Starting OCDP services..." @echo "Server IP: $(SERVER_IP)" @echo "============================================" @ALLOWED_DEV_ORIGINS="$(ALLOWED_ORIGINS)" \ DATABASE_URL="$(DATABASE_URL)" \ JWT_SECRET="$(JWT_SECRET)" \ ENCRYPTION_KEY="$(ENCRYPTION_KEY)" \ ADAPTER_MODE="$(ADAPTER_MODE)" \ BACKEND_PORT=$(BACKEND_PORT) \ INIT_DB_SQL_PATH="$(INIT_DB_SQL_PATH)" \ docker compose $(COMPOSE_FILES) --profile backend up -d @echo "" @echo "✅ Services started:" @echo " Frontend: http://$(SERVER_IP)" @echo " Backend: http://$(SERVER_IP):$(BACKEND_PORT)/api/v1" @echo " Swagger: http://$(SERVER_IP):$(BACKEND_PORT)/api/docs" @echo " PostgreSQL: localhost:5432" @echo "" @echo " Default login: admin / admin123" @echo "============================================" # Stop all services (保留数据) down: @echo "Stopping OCDP services..." @docker compose $(COMPOSE_FILES) down # Restart all services restart: down up # Full cleanup (删除所有数据卷) clean: @echo "============================================" @echo "⚠️ Full cleanup - 警告:此操作将删除所有数据!" @echo "============================================" @docker compose $(COMPOSE_FILES) down -v @echo "✅ All services stopped and data removed" # ============================================================ # Build Commands # ============================================================ .PHONY: build build-frontend build-backend rebuild # Build all images build: @docker compose $(COMPOSE_FILES) build # Rebuild and start (强制重建前端) rebuild: @docker compose $(COMPOSE_FILES) up -d --build --force-recreate # Rebuild frontend only build-frontend: @docker compose -f docker-compose.yml build frontend # Rebuild backend only build-backend: @docker compose -f backend/docker-compose.yml build backend # ============================================================ # Log Commands # ============================================================ # View all logs logs: @docker compose $(COMPOSE_FILES) logs -f # View backend logs logs-backend: @docker logs -f ocdp-backend # View frontend logs logs-frontend: @docker logs -f ocdp-frontend # View nginx logs logs-nginx: @docker logs -f ocdp-nginx # ============================================================ # Status Commands # ============================================================ # Show service status status: @docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" # ============================================================ # Database Commands # ============================================================ .PHONY: db-reset db-init db-shell # Reset database (删除并重建) db-reset: @echo "Resetting database..." @docker compose $(COMPOSE_FILES) exec -T postgres psql -U postgres -c "DROP DATABASE IF EXISTS ocdp;" || true @docker compose $(COMPOSE_FILES) exec -T postgres psql -U postgres -c "CREATE DATABASE ocdp;" || true @docker compose $(COMPOSE_FILES) exec -T postgres psql -U postgres -d ocdp -c "$$(cat backend/scripts/init-db.sql)" # Initialize database db-init: @docker compose $(COMPOSE_FILES) exec -T postgres psql -U postgres -d ocdp -c "$$(cat backend/scripts/init-db.sql)" # Open database shell db-shell: @docker compose $(COMPOSE_FILES) exec postgres psql -U postgres -d ocdp # ============================================================ # Help # ============================================================ help: @echo "OCDP - Open Cloud Deployment Platform" @echo "" @echo "Usage: make [target]" @echo "" @echo "Main Commands:" @echo " make up - 启动所有服务" @echo " make down - 停止所有服务(保留数据)" @echo " make restart - 重启所有服务" @echo " make clean - 完全清理(删除所有数据)" @echo " make rebuild - 强制重建并启动" @echo "" @echo "Build Commands:" @echo " make build - 构建所有镜像" @echo " make build-frontend - 只构建前端" @echo " make build-backend - 只构建后端" @echo "" @echo "Log Commands:" @echo " make logs - 查看所有日志" @echo " make logs-backend - 只看后端日志" @echo " make logs-frontend - 只看前端日志" @echo " make logs-nginx - 只看nginx日志" @echo "" @echo "Database Commands:" @echo " make db-reset - 重置数据库" @echo " make db-init - 初始化数据库" @echo " make db-shell - 进入数据库终端" @echo "" @echo "Utility Commands:" @echo " make status - 查看服务状态" @echo "" @echo "Environment Variables:" @echo " SERVER_IP=$(SERVER_IP) - 服务器IP(默认: 10.6.80.114)" @echo " BACKEND_PORT=$(BACKEND_PORT) - 后端端口(默认: 8080)" @echo " ALLOWED_ORIGINS=$(ALLOWED_ORIGINS) - 允许的跨域来源" @echo "" @echo "Examples:" @echo " make up SERVER_IP=192.168.1.100 # 自定义IP启动" @echo " make clean # 完全清理并重新开始" @echo "============================================"