You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Makefile 4.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. # Variables
  2. DOCKER_REGISTRY=langgenius
  3. WEB_IMAGE=$(DOCKER_REGISTRY)/dify-web
  4. API_IMAGE=$(DOCKER_REGISTRY)/dify-api
  5. VERSION=latest
  6. # Default target - show help
  7. .DEFAULT_GOAL := help
  8. # Backend Development Environment Setup
  9. .PHONY: dev-setup prepare-docker prepare-web prepare-api
  10. # Dev setup target
  11. dev-setup: prepare-docker prepare-web prepare-api
  12. @echo "✅ Backend development environment setup complete!"
  13. # Step 1: Prepare Docker middleware
  14. prepare-docker:
  15. @echo "🐳 Setting up Docker middleware..."
  16. @cp -n docker/middleware.env.example docker/middleware.env 2>/dev/null || echo "Docker middleware.env already exists"
  17. @cd docker && docker compose -f docker-compose.middleware.yaml --env-file middleware.env -p dify-middlewares-dev up -d
  18. @echo "✅ Docker middleware started"
  19. # Step 2: Prepare web environment
  20. prepare-web:
  21. @echo "🌐 Setting up web environment..."
  22. @cp -n web/.env.example web/.env 2>/dev/null || echo "Web .env already exists"
  23. @cd web && pnpm install
  24. @cd web && pnpm build
  25. @echo "✅ Web environment prepared (not started)"
  26. # Step 3: Prepare API environment
  27. prepare-api:
  28. @echo "🔧 Setting up API environment..."
  29. @cp -n api/.env.example api/.env 2>/dev/null || echo "API .env already exists"
  30. @cd api && uv sync --dev
  31. @cd api && uv run flask db upgrade
  32. @echo "✅ API environment prepared (not started)"
  33. # Clean dev environment
  34. dev-clean:
  35. @echo "⚠️ Stopping Docker containers..."
  36. @cd docker && docker compose -f docker-compose.middleware.yaml --env-file middleware.env -p dify-middlewares-dev down
  37. @echo "🗑️ Removing volumes..."
  38. @rm -rf docker/volumes/db
  39. @rm -rf docker/volumes/redis
  40. @rm -rf docker/volumes/plugin_daemon
  41. @rm -rf docker/volumes/weaviate
  42. @rm -rf api/storage
  43. @echo "✅ Cleanup complete"
  44. # Backend Code Quality Commands
  45. format:
  46. @echo "🎨 Running ruff format..."
  47. @uv run --project api --dev ruff format ./api
  48. @echo "✅ Code formatting complete"
  49. check:
  50. @echo "🔍 Running ruff check..."
  51. @uv run --project api --dev ruff check ./api
  52. @echo "✅ Code check complete"
  53. lint:
  54. @echo "🔧 Running ruff format and check with fixes..."
  55. @uv run --project api --dev sh -c 'ruff format ./api && ruff check --fix ./api'
  56. @echo "✅ Linting complete"
  57. type-check:
  58. @echo "📝 Running type check with basedpyright..."
  59. @uv run --directory api --dev basedpyright
  60. @echo "✅ Type check complete"
  61. # Build Docker images
  62. build-web:
  63. @echo "Building web Docker image: $(WEB_IMAGE):$(VERSION)..."
  64. docker build -t $(WEB_IMAGE):$(VERSION) ./web
  65. @echo "Web Docker image built successfully: $(WEB_IMAGE):$(VERSION)"
  66. build-api:
  67. @echo "Building API Docker image: $(API_IMAGE):$(VERSION)..."
  68. docker build -t $(API_IMAGE):$(VERSION) ./api
  69. @echo "API Docker image built successfully: $(API_IMAGE):$(VERSION)"
  70. # Push Docker images
  71. push-web:
  72. @echo "Pushing web Docker image: $(WEB_IMAGE):$(VERSION)..."
  73. docker push $(WEB_IMAGE):$(VERSION)
  74. @echo "Web Docker image pushed successfully: $(WEB_IMAGE):$(VERSION)"
  75. push-api:
  76. @echo "Pushing API Docker image: $(API_IMAGE):$(VERSION)..."
  77. docker push $(API_IMAGE):$(VERSION)
  78. @echo "API Docker image pushed successfully: $(API_IMAGE):$(VERSION)"
  79. # Build all images
  80. build-all: build-web build-api
  81. # Push all images
  82. push-all: push-web push-api
  83. build-push-api: build-api push-api
  84. build-push-web: build-web push-web
  85. # Build and push all images
  86. build-push-all: build-all push-all
  87. @echo "All Docker images have been built and pushed."
  88. # Help target
  89. help:
  90. @echo "Development Setup Targets:"
  91. @echo " make dev-setup - Run all setup steps for backend dev environment"
  92. @echo " make prepare-docker - Set up Docker middleware"
  93. @echo " make prepare-web - Set up web environment"
  94. @echo " make prepare-api - Set up API environment"
  95. @echo " make dev-clean - Stop Docker middleware containers"
  96. @echo ""
  97. @echo "Backend Code Quality:"
  98. @echo " make format - Format code with ruff"
  99. @echo " make check - Check code with ruff"
  100. @echo " make lint - Format and fix code with ruff"
  101. @echo " make type-check - Run type checking with basedpyright"
  102. @echo ""
  103. @echo "Docker Build Targets:"
  104. @echo " make build-web - Build web Docker image"
  105. @echo " make build-api - Build API Docker image"
  106. @echo " make build-all - Build all Docker images"
  107. @echo " make push-all - Push all Docker images"
  108. @echo " make build-push-all - Build and push all Docker images"
  109. # Phony targets
  110. .PHONY: build-web build-api push-web push-api build-all push-all build-push-all dev-setup prepare-docker prepare-web prepare-api dev-clean help format check lint type-check