# 示例 Makefile # 提供常用的开发和部署命令 .PHONY: help build run migrate-up migrate-down migrate-status docker-build docker-up clean # 默认目标:显示帮助 help: @echo "可用命令:" @echo " make build - 编译应用和迁移工具" @echo " make run - 运行应用(先执行迁移)" @echo " make migrate-up - 执行数据库迁移" @echo " make migrate-down - 回滚数据库迁移" @echo " make migrate-status - 查看迁移状态" @echo " make docker-build - 构建 Docker 镜像" @echo " make docker-up - 启动 Docker 服务" @echo " make clean - 清理编译文件" # 编译 build: @echo "编译应用..." @mkdir -p bin @go build -o bin/server cmd/server/main.go @go build -o bin/migrate cmd/migrate/main.go @echo "✓ 编译完成" # 运行应用 run: migrate-up @echo "启动应用..." @./bin/server # 执行迁移 migrate-up: build @echo "执行数据库迁移..." @./bin/migrate up # 回滚迁移 migrate-down: build @echo "回滚数据库迁移..." @./bin/migrate down # 查看迁移状态 migrate-status: build @./bin/migrate status # 构建 Docker 镜像 docker-build: @echo "构建 Docker 镜像..." @docker build -t myapp:latest . # 启动 Docker 服务 docker-up: @echo "启动 Docker 服务..." @docker-compose up --build # 清理 clean: @echo "清理编译文件..." @rm -rf bin @echo "✓ 清理完成" # 开发环境:直接运行(不编译) dev-migrate-up: @go run cmd/migrate/main.go up dev-migrate-down: @go run cmd/migrate/main.go down dev-migrate-status: @go run cmd/migrate/main.go status # 交叉编译(Linux) build-linux: @echo "交叉编译 Linux 版本..." @mkdir -p bin @GOOS=linux GOARCH=amd64 go build -o bin/server-linux cmd/server/main.go @GOOS=linux GOARCH=amd64 go build -o bin/migrate-linux cmd/migrate/main.go @echo "✓ Linux 版本编译完成"