-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
126 lines (105 loc) · 3.89 KB
/
Makefile
File metadata and controls
126 lines (105 loc) · 3.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# ============ Cross-Platform Makefile for MLConBerlin ============
# Works on macOS, Linux, Windows (PowerShell, CMD, Git Bash, WSL)
# ================================================================
# Detect OS
ifeq ($(OS),Windows_NT)
ACTIVATE = .\venv\Scripts\activate.bat
PYTHON = py -3.12
RM = rmdir /S /Q
SHELLTYPE := cmd
else
ACTIVATE = . venv/bin/activate
PYTHON = python3.12
RM = rm -rf
SHELLTYPE := bash
endif
REQ = requirements.txt
DOCKER_DIR = docker-services
AIRFLOW_DIR = airflow
.PHONY: help setup venv install docker-up docker-down jupyter clean
help:
@echo "Available commands:"
@echo " make setup - Create venv and install dependencies"
@echo " make docker-up - Start All Docker containers // Needs high resources!"
@echo " make docker-up-databases - Start Postgres, Redis and Clickhouse Containers"
@echo " make docker-up-airflow - Start Airflow Services"
@echo " make docker-up-langfuse - Start Langfuse Services"
@echo " make docker-up-qdrant - Start Qdrant Database"
@echo " make docker-up-chat - Start Front- and Backend as Docker Containers"
@echo " make docker-down-databases - Stop all Database Containers"
@echo " make docker-down-airflow - Stop all Airflow Containers"
@echo " make docker-down-langfuse - Stop all Langfuse Containers"
@echo " make docker-down-qdrant - Stop the Qdrant Container"
@echo " make docker-down-chat - Stop Front- and Backend Container"
@echo " make docker-down - Stop and Remove all Docker containers"
@echo " make jupyter - Start Jupyter Lab"
@echo " make clean - Remove venv and temporary files"
# ---------- Python Virtual Environment ----------
setup: venv install
venv:
ifeq ($(OS),Windows_NT)
if not exist venv ($(PYTHON) -m venv venv) else (echo Virtual environment already exists.)
else
@if [ ! -d "venv" ]; then \
echo "Creating virtual environment..."; \
$(PYTHON) -m venv venv; \
else \
echo "Virtual environment already exists."; \
fi
endif
install:
ifeq ($(OS),Windows_NT)
@echo "Installing dependencies..."
@cmd /C "$(ACTIVATE) && .\venv\Scripts\python.exe -m pip install --upgrade pip && pip install -r $(REQ)"
else
@echo "Installing dependencies..."
@$(ACTIVATE) && pip install --upgrade pip && pip install -r $(REQ)
endif
# ---------- Docker Commands ----------
docker-up:
@echo "Starting Docker services..."
cd $(DOCKER_DIR) && docker compose up -d
docker-up-airflow:
@echo "Starting Airflow services..."
cd $(AIRFLOW_DIR) && docker compose up -d
docker-up-langfuse:
@echo "Starting Langfuse services..."
cd $(DOCKER_DIR) && docker compose up -d langfuse-init langfuse-server langfuse-worker postgres redis clickhouse minio qdrant
docker-up-qdrant:
@echo "Starting Qdrant service..."
cd $(DOCKER_DIR) && docker compose up -d qdrant
docker-up-chat:
@echo "Starting Back- and Frontend..."
cd $(DOCKER_DIR) && docker compose up -d backend frontend qdrant
docker-down:
@echo "Stopping Docker services..."
cd $(DOCKER_DIR) && docker compose down
docker-down-databases:
@echo "Stopping Database Containers..."
cd $(DOCKER_DIR) && docker compose stop postgres redis clickhouse
docker-down-airflow:
@echo "Stopping Airflow Containers..."
cd $(AIRFLOW_DIR) && docker compose down
docker-down-langfuse:
@echo "Stopping Langfuse Containers..."
cd $(DOCKER_DIR) && docker compose stop langfuse-server langfuse-worker
docker-down-qdrant:
@echo "Stopping Qdrant Containers..."
cd $(DOCKER_DIR) && docker compose stop qdrant
docker-down-chat:
@echo "Stopping Chat Services..."
cd $(DOCKER_DIR) && docker compose stop backend frontend
# ---------- Run Jupyter Lab ----------
jupyter:
@echo "Launching Jupyter Lab..."
@$(ACTIVATE) && jupyter lab
# ---------- Cleanup ----------
clean:
@echo "Cleaning up environment..."
ifeq ($(OS),Windows_NT)
-$(RM) venv
else
-$(RM) venv
find . -type d -name "__pycache__" -exec rm -rf {} +
find . -type f -name "*.pyc" -delete
endif