102 lines
3.6 KiB
Makefile
102 lines
3.6 KiB
Makefile
# Variables
|
|
DOCKER_REGISTRY=langgenius
|
|
WEB_IMAGE=$(DOCKER_REGISTRY)/dify-web
|
|
API_IMAGE=$(DOCKER_REGISTRY)/dify-api
|
|
VERSION=latest
|
|
|
|
# Backend Development Environment Setup
|
|
.PHONY: dev-setup prepare-docker prepare-web prepare-api
|
|
|
|
# Default dev setup target
|
|
dev-setup: prepare-docker prepare-web prepare-api
|
|
@echo "✅ Backend development environment setup complete!"
|
|
|
|
# Step 1: Prepare Docker middleware
|
|
prepare-docker:
|
|
@echo "🐳 Setting up Docker middleware..."
|
|
@cp -n docker/middleware.env.example docker/middleware.env 2>/dev/null || echo "Docker middleware.env already exists"
|
|
@cd docker && docker compose -f docker-compose.middleware.yaml --env-file middleware.env -p dify-middlewares-dev up -d
|
|
@echo "✅ Docker middleware started"
|
|
|
|
# Step 2: Prepare web environment
|
|
prepare-web:
|
|
@echo "🌐 Setting up web environment..."
|
|
@cp -n web/.env.example web/.env 2>/dev/null || echo "Web .env already exists"
|
|
@cd web && pnpm install
|
|
@cd web && pnpm build
|
|
@echo "✅ Web environment prepared (not started)"
|
|
|
|
# Step 3: Prepare API environment
|
|
prepare-api:
|
|
@echo "🔧 Setting up API environment..."
|
|
@cp -n api/.env.example api/.env 2>/dev/null || echo "API .env already exists"
|
|
@cd api && uv sync --dev
|
|
@cd api && uv run flask db upgrade
|
|
@echo "✅ API environment prepared (not started)"
|
|
|
|
# Clean dev environment
|
|
dev-clean:
|
|
@echo "⚠️ Stopping Docker containers..."
|
|
@cd docker && docker compose -f docker-compose.middleware.yaml --env-file middleware.env -p dify-middlewares-dev down
|
|
@echo "🗑️ Removing volumes..."
|
|
@rm -rf docker/volumes/db
|
|
@rm -rf docker/volumes/redis
|
|
@rm -rf docker/volumes/plugin_daemon
|
|
@rm -rf docker/volumes/weaviate
|
|
@rm -rf api/storage
|
|
@echo "✅ Cleanup complete"
|
|
|
|
# Build Docker images
|
|
build-web:
|
|
@echo "Building web Docker image: $(WEB_IMAGE):$(VERSION)..."
|
|
docker build -t $(WEB_IMAGE):$(VERSION) ./web
|
|
@echo "Web Docker image built successfully: $(WEB_IMAGE):$(VERSION)"
|
|
|
|
build-api:
|
|
@echo "Building API Docker image: $(API_IMAGE):$(VERSION)..."
|
|
docker build -t $(API_IMAGE):$(VERSION) ./api
|
|
@echo "API Docker image built successfully: $(API_IMAGE):$(VERSION)"
|
|
|
|
# Push Docker images
|
|
push-web:
|
|
@echo "Pushing web Docker image: $(WEB_IMAGE):$(VERSION)..."
|
|
docker push $(WEB_IMAGE):$(VERSION)
|
|
@echo "Web Docker image pushed successfully: $(WEB_IMAGE):$(VERSION)"
|
|
|
|
push-api:
|
|
@echo "Pushing API Docker image: $(API_IMAGE):$(VERSION)..."
|
|
docker push $(API_IMAGE):$(VERSION)
|
|
@echo "API Docker image pushed successfully: $(API_IMAGE):$(VERSION)"
|
|
|
|
# Build all images
|
|
build-all: build-web build-api
|
|
|
|
# Push all images
|
|
push-all: push-web push-api
|
|
|
|
build-push-api: build-api push-api
|
|
build-push-web: build-web push-web
|
|
|
|
# Build and push all images
|
|
build-push-all: build-all push-all
|
|
@echo "All Docker images have been built and pushed."
|
|
|
|
# Help target
|
|
help:
|
|
@echo "Development Setup Targets:"
|
|
@echo " make dev-setup - Run all setup steps for backend dev environment"
|
|
@echo " make prepare-docker - Set up Docker middleware"
|
|
@echo " make prepare-web - Set up web environment"
|
|
@echo " make prepare-api - Set up API environment"
|
|
@echo " make dev-clean - Stop Docker middleware containers"
|
|
@echo ""
|
|
@echo "Docker Build Targets:"
|
|
@echo " make build-web - Build web Docker image"
|
|
@echo " make build-api - Build API Docker image"
|
|
@echo " make build-all - Build all Docker images"
|
|
@echo " make push-all - Push all Docker images"
|
|
@echo " make build-push-all - Build and push all Docker images"
|
|
|
|
# Phony targets
|
|
.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
|