init
This commit is contained in:
163
Makefile
Normal file
163
Makefile
Normal file
@@ -0,0 +1,163 @@
|
||||
# 项目名称
|
||||
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
|
||||
|
||||
# 工具命令
|
||||
.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 "项目已停止!"
|
||||
Reference in New Issue
Block a user