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 3.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. # Variables
  2. DOCKER_REGISTRY=langgenius
  3. WEB_IMAGE=$(DOCKER_REGISTRY)/dify-web
  4. API_IMAGE=$(DOCKER_REGISTRY)/dify-api
  5. VERSION=latest
  6. # Backend Development Environment Setup
  7. .PHONY: dev-setup prepare-docker prepare-web prepare-api
  8. # Default dev setup target
  9. dev-setup: prepare-docker prepare-web prepare-api
  10. @echo "✅ Backend development environment setup complete!"
  11. # Step 1: Prepare Docker middleware
  12. prepare-docker:
  13. @echo "🐳 Setting up Docker middleware..."
  14. @cp -n docker/middleware.env.example docker/middleware.env 2>/dev/null || echo "Docker middleware.env already exists"
  15. @cd docker && docker compose -f docker-compose.middleware.yaml --env-file middleware.env -p dify-middlewares-dev up -d
  16. @echo "✅ Docker middleware started"
  17. # Step 2: Prepare web environment
  18. prepare-web:
  19. @echo "🌐 Setting up web environment..."
  20. @cp -n web/.env.example web/.env 2>/dev/null || echo "Web .env already exists"
  21. @cd web && pnpm install
  22. @cd web && pnpm build
  23. @echo "✅ Web environment prepared (not started)"
  24. # Step 3: Prepare API environment
  25. prepare-api:
  26. @echo "🔧 Setting up API environment..."
  27. @cp -n api/.env.example api/.env 2>/dev/null || echo "API .env already exists"
  28. @cd api && uv sync --dev
  29. @cd api && uv run flask db upgrade
  30. @echo "✅ API environment prepared (not started)"
  31. # Clean dev environment
  32. dev-clean:
  33. @echo "⚠️ Stopping Docker containers..."
  34. @cd docker && docker compose -f docker-compose.middleware.yaml --env-file middleware.env -p dify-middlewares-dev down
  35. @echo "🗑️ Removing volumes..."
  36. @rm -rf docker/volumes/db
  37. @rm -rf docker/volumes/redis
  38. @rm -rf docker/volumes/plugin_daemon
  39. @rm -rf docker/volumes/weaviate
  40. @rm -rf api/storage
  41. @echo "✅ Cleanup complete"
  42. # Build Docker images
  43. build-web:
  44. @echo "Building web Docker image: $(WEB_IMAGE):$(VERSION)..."
  45. docker build -t $(WEB_IMAGE):$(VERSION) ./web
  46. @echo "Web Docker image built successfully: $(WEB_IMAGE):$(VERSION)"
  47. build-api:
  48. @echo "Building API Docker image: $(API_IMAGE):$(VERSION)..."
  49. docker build -t $(API_IMAGE):$(VERSION) ./api
  50. @echo "API Docker image built successfully: $(API_IMAGE):$(VERSION)"
  51. # Push Docker images
  52. push-web:
  53. @echo "Pushing web Docker image: $(WEB_IMAGE):$(VERSION)..."
  54. docker push $(WEB_IMAGE):$(VERSION)
  55. @echo "Web Docker image pushed successfully: $(WEB_IMAGE):$(VERSION)"
  56. push-api:
  57. @echo "Pushing API Docker image: $(API_IMAGE):$(VERSION)..."
  58. docker push $(API_IMAGE):$(VERSION)
  59. @echo "API Docker image pushed successfully: $(API_IMAGE):$(VERSION)"
  60. # Build all images
  61. build-all: build-web build-api
  62. # Push all images
  63. push-all: push-web push-api
  64. build-push-api: build-api push-api
  65. build-push-web: build-web push-web
  66. # Build and push all images
  67. build-push-all: build-all push-all
  68. @echo "All Docker images have been built and pushed."
  69. # Help target
  70. help:
  71. @echo "Development Setup Targets:"
  72. @echo " make dev-setup - Run all setup steps for backend dev environment"
  73. @echo " make prepare-docker - Set up Docker middleware"
  74. @echo " make prepare-web - Set up web environment"
  75. @echo " make prepare-api - Set up API environment"
  76. @echo " make dev-clean - Stop Docker middleware containers"
  77. @echo ""
  78. @echo "Docker Build Targets:"
  79. @echo " make build-web - Build web Docker image"
  80. @echo " make build-api - Build API Docker image"
  81. @echo " make build-all - Build all Docker images"
  82. @echo " make push-all - Push all Docker images"
  83. @echo " make build-push-all - Build and push all Docker images"
  84. # Phony targets
  85. .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