Files
ai_dianshang/Makefile

201 lines
5.5 KiB
Makefile
Raw Permalink Normal View History

2025-11-17 14:11:46 +08:00
# 项目名称
PROJECT_NAME := dianshang
SERVER_DIR := server
BINARY_NAME := dianshang
# Go 相关变量
GO_VERSION := 1.21
GOOS := linux
GOARCH := amd64
# Docker 相关变量
DOCKER_IMAGE := $(PROJECT_NAME)-server
DOCKER_TAG := latest
# 默认目标
.PHONY: help
help: ## 显示帮助信息
@echo "可用的命令:"
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf " %-15s %s\n", $$1, $$2}' $(MAKEFILE_LIST)
# 开发相关命令
.PHONY: dev
dev: ## 启动开发环境
cd $(SERVER_DIR) && go run cmd/server/main.go
.PHONY: build
build: ## 构建二进制文件
cd $(SERVER_DIR) && CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build -a -installsuffix cgo -o $(BINARY_NAME) cmd/server/main.go
.PHONY: clean
clean: ## 清理构建文件
cd $(SERVER_DIR) && rm -f $(BINARY_NAME)
docker system prune -f
.PHONY: test
test: ## 运行测试
cd $(SERVER_DIR) && go test -v ./...
.PHONY: fmt
fmt: ## 格式化代码
cd $(SERVER_DIR) && go fmt ./...
.PHONY: lint
lint: ## 代码检查
cd $(SERVER_DIR) && golangci-lint run
.PHONY: deps
deps: ## 下载依赖
cd $(SERVER_DIR) && go mod download && go mod tidy
# 数据库相关命令
.PHONY: migrate
migrate: ## 运行数据库迁移
cd $(SERVER_DIR) && go run cmd/migrate/main.go
.PHONY: migrate-seed
migrate-seed: ## 运行数据库迁移并初始化数据
cd $(SERVER_DIR) && go run cmd/migrate/main.go --seed
.PHONY: db-reset
db-reset: ## 重置数据库
docker-compose exec mysql mysql -uroot -proot123456 -e "DROP DATABASE IF EXISTS dianshang; CREATE DATABASE dianshang CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
$(MAKE) migrate-seed
# Docker 相关命令
.PHONY: docker-build
docker-build: ## 构建 Docker 镜像
docker build -t $(DOCKER_IMAGE):$(DOCKER_TAG) $(SERVER_DIR)
.PHONY: docker-run
docker-run: ## 运行 Docker 容器
docker run -d --name $(PROJECT_NAME)-server -p 8080:8080 $(DOCKER_IMAGE):$(DOCKER_TAG)
.PHONY: docker-stop
docker-stop: ## 停止 Docker 容器
docker stop $(PROJECT_NAME)-server || true
docker rm $(PROJECT_NAME)-server || true
.PHONY: docker-logs
docker-logs: ## 查看 Docker 容器日志
docker logs -f $(PROJECT_NAME)-server
# Docker Compose 相关命令
.PHONY: up
up: ## 启动所有服务
docker-compose up -d
.PHONY: down
down: ## 停止所有服务
docker-compose down
.PHONY: restart
restart: ## 重启所有服务
docker-compose restart
.PHONY: logs
logs: ## 查看所有服务日志
docker-compose logs -f
.PHONY: logs-server
logs-server: ## 查看服务器日志
docker-compose logs -f server
.PHONY: logs-mysql
logs-mysql: ## 查看 MySQL 日志
docker-compose logs -f mysql
.PHONY: logs-redis
logs-redis: ## 查看 Redis 日志
docker-compose logs -f redis
.PHONY: ps
ps: ## 查看服务状态
docker-compose ps
# 生产部署相关命令
.PHONY: deploy-build
deploy-build: ## 构建生产版本
cd $(SERVER_DIR) && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -a -installsuffix cgo -o $(BINARY_NAME) cmd/server/main.go
.PHONY: deploy-docker
deploy-docker: ## 构建并推送 Docker 镜像
docker build -t $(DOCKER_IMAGE):$(DOCKER_TAG) $(SERVER_DIR)
docker tag $(DOCKER_IMAGE):$(DOCKER_TAG) $(DOCKER_IMAGE):latest
# docker push $(DOCKER_IMAGE):$(DOCKER_TAG)
# docker push $(DOCKER_IMAGE):latest
2025-11-28 15:18:10 +08:00
# 多环境运行命令
.PHONY: run-dev
run-dev: ## 运行开发环境
cd $(SERVER_DIR) && GO_ENV=development go run cmd/server/main.go
.PHONY: run-test
run-test: ## 运行测试环境
cd $(SERVER_DIR) && GO_ENV=test go run cmd/server/main.go
.PHONY: run-prod
run-prod: ## 运行生产环境(通用)
cd $(SERVER_DIR) && GO_ENV=production go run cmd/server/main.go
.PHONY: run-prod-cn
run-prod-cn: ## 运行生产环境-中国区
cd $(SERVER_DIR) && GO_ENV=prod-cn go run cmd/server/main.go
.PHONY: run-prod-us
run-prod-us: ## 运行生产环境-美国区
cd $(SERVER_DIR) && GO_ENV=prod-us go run cmd/server/main.go
.PHONY: run-prod-eu
run-prod-eu: ## 运行生产环境-欧洲区
cd $(SERVER_DIR) && GO_ENV=prod-eu go run cmd/server/main.go
# 多环境构建命令
.PHONY: build-prod-cn
build-prod-cn: ## 构建中国区生产版本
cd $(SERVER_DIR) && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -a -installsuffix cgo -o $(BINARY_NAME)-cn cmd/server/main.go
.PHONY: build-prod-us
build-prod-us: ## 构建美国区生产版本
cd $(SERVER_DIR) && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -a -installsuffix cgo -o $(BINARY_NAME)-us cmd/server/main.go
.PHONY: build-prod-eu
build-prod-eu: ## 构建欧洲区生产版本
cd $(SERVER_DIR) && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -a -installsuffix cgo -o $(BINARY_NAME)-eu cmd/server/main.go
2025-11-17 14:11:46 +08:00
# 工具命令
.PHONY: install-tools
install-tools: ## 安装开发工具
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
go install github.com/swaggo/swag/cmd/swag@latest
.PHONY: gen-docs
gen-docs: ## 生成 API 文档
cd $(SERVER_DIR) && swag init -g cmd/server/main.go
.PHONY: check-env
check-env: ## 检查环境
@echo "检查 Go 版本..."
@go version
@echo "检查 Docker 版本..."
@docker --version
@echo "检查 Docker Compose 版本..."
@docker-compose --version
# 快速启动命令
.PHONY: quick-start
quick-start: ## 快速启动项目
@echo "正在启动项目..."
$(MAKE) up
@echo "等待服务启动..."
@sleep 10
$(MAKE) migrate-seed
@echo "项目启动完成!"
@echo "API 地址: http://localhost:8080"
@echo "健康检查: http://localhost:8080/health"
.PHONY: quick-stop
quick-stop: ## 快速停止项目
@echo "正在停止项目..."
$(MAKE) down
@echo "项目已停止!"