.PHONY: help build run test clean docker-build docker-run migrate-up migrate-down docker-restart docker-stop start-all stop-all start-ollama stop-ollama build-images build-images-app build-images-docreader build-images-frontend clean-images # Show help help: @echo "WeKnora Makefile 帮助" @echo "" @echo "基础命令:" @echo " build 构建应用" @echo " run 运行应用" @echo " test 运行测试" @echo " clean 清理构建文件" @echo "" @echo "Docker 命令:" @echo " docker-build 构建 Docker 镜像" @echo " docker-run 运行 Docker 容器" @echo " docker-stop 停止 Docker 容器" @echo " docker-restart 重启 Docker 容器" @echo "" @echo "服务管理:" @echo " start-all 启动所有服务" @echo " stop-all 停止所有服务" @echo " start-ollama 仅启动 Ollama 服务" @echo "" @echo "镜像构建:" @echo " build-images 从源码构建所有镜像" @echo " build-images-app 从源码构建应用镜像" @echo " build-images-docreader 从源码构建文档读取器镜像" @echo " build-images-frontend 从源码构建前端镜像" @echo " clean-images 清理本地镜像" @echo "" @echo "数据库:" @echo " migrate-up 执行数据库迁移" @echo " migrate-down 回滚数据库迁移" @echo "" @echo "开发工具:" @echo " fmt 格式化代码" @echo " lint 代码检查" @echo " deps 安装依赖" @echo " docs 生成 API 文档" # Go related variables BINARY_NAME=WeKnora MAIN_PATH=./cmd/server # Docker related variables DOCKER_IMAGE=WeKnora DOCKER_TAG=latest # Build the application build: go build -o $(BINARY_NAME) $(MAIN_PATH) # Run the application run: build ./$(BINARY_NAME) # Run tests test: go test -v ./... # Clean build artifacts clean: go clean rm -f $(BINARY_NAME) # Build Docker image docker-build: docker build -t $(DOCKER_IMAGE):$(DOCKER_TAG) . # Run Docker container (传统方式) docker-run: docker-compose up # 使用新脚本启动所有服务 start-all: ./scripts/start_all.sh # 使用新脚本仅启动Ollama服务 start-ollama: ./scripts/start_all.sh --ollama # 使用新脚本仅启动Docker容器 start-docker: ./scripts/start_all.sh --docker # 使用新脚本停止所有服务 stop-all: ./scripts/start_all.sh --stop # Stop Docker container (传统方式) docker-stop: docker-compose down # 从源码构建镜像相关命令 build-images: ./scripts/build_images.sh build-images-app: ./scripts/build_images.sh --app build-images-docreader: ./scripts/build_images.sh --docreader build-images-frontend: ./scripts/build_images.sh --frontend clean-images: ./scripts/build_images.sh --clean # Restart Docker container (stop, rebuild, start) docker-restart: docker-compose stop -t 60 docker-compose up --build # Database migrations migrate-up: ./scripts/migrate.sh up migrate-down: ./scripts/migrate.sh down # Generate API documentation docs: swag init -g $(MAIN_PATH)/main.go -o ./docs # Format code fmt: go fmt ./... # Lint code lint: golangci-lint run # Install dependencies deps: go mod download # Build for production build-prod: GOOS=linux go build -a -installsuffix cgo -ldflags="-w -s" -o $(BINARY_NAME) $(MAIN_PATH) clean-db: @echo "Cleaning database..." @if [ $$(docker volume ls -q -f name=weknora_postgres-data) ]; then \ docker volume rm weknora_postgres-data; \ fi @if [ $$(docker volume ls -q -f name=weknora_minio_data) ]; then \ docker volume rm weknora_minio_data; \ fi @if [ $$(docker volume ls -q -f name=weknora_redis_data) ]; then \ docker volume rm weknora_redis_data; \ fi