.PHONY: build run test clean docker-build docker-run migrate-up migrate-down docker-restart docker-stop start-all stop-all start-ollama stop-ollama # 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 # 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