Skip to content

Commit d6761b3

Browse files
update
1 parent 385cfcc commit d6761b3

3 files changed

Lines changed: 285 additions & 28 deletions

File tree

containers/llm-orchestrator-min/Dockerfile

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,23 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
1111

1212
WORKDIR /app
1313

14-
# Ustawienie zmiennych środowiskowych dla pip, aby zoptymalizować cache
15-
ENV PIP_NO_CACHE_DIR=0 \
16-
PIP_DISABLE_PIP_VERSION_CHECK=1 \
17-
PYTHONDONTWRITEBYTECODE=1 \
18-
PYTHONUNBUFFERED=1 \
19-
PIP_CACHE_DIR=/root/.cache/pip
14+
# Ustawienie zmiennych środowiskowych dla pip
15+
ENV PYTHONDONTWRITEBYTECODE=1 \
16+
PYTHONUNBUFFERED=1
2017

21-
# Utworzenie katalogów dla cache
22-
RUN mkdir -p /root/.cache/pip /root/.cache/pip/wheels /app/models /app/config /app/model-configs /app/data
18+
# Utworzenie katalogów dla aplikacji
19+
RUN mkdir -p /app/models /app/config /app/model-configs /app/data
2320

2421
# Kopiowanie tylko pliku requirements.txt najpierw, aby lepiej wykorzystać cache
25-
COPY requirements.txt .
22+
COPY containers/llm-orchestrator-min/requirements.txt .
2623

27-
# Instalacja zależności z wykorzystaniem cache
28-
RUN --mount=type=cache,target=/root/.cache/pip \
29-
pip install --no-cache-dir --cache-dir=/root/.cache/pip -r requirements.txt
24+
# Instalacja zależności bez użycia BuildKit
25+
RUN pip install --no-cache-dir -r requirements.txt
3026

3127
# Kopiowanie pozostałych plików aplikacji
32-
COPY api.py ./
33-
COPY model-configs/ ./model-configs/
34-
COPY data/ ./data/
28+
COPY containers/llm-orchestrator-min/api.py ./
29+
COPY containers/llm-orchestrator-min/model-configs/ ./model-configs/
30+
COPY containers/llm-orchestrator-min/data/ ./data/
3531

3632
# Pobieranie małego modelu LLM (TinyLlama-1.1B) tylko jeśli nie istnieje
3733
# Używamy wolumenu, aby zachować model między uruchomieniami

docker-compose.min.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ services:
44
llm-orchestrator-min:
55
build:
66
context: ./containers/llm-orchestrator-min
7-
args:
7+
args: {}
88
cache_from:
99
- llm-orchestrator-min:latest
1010
container_name: llm-orchestrator-min
@@ -34,7 +34,7 @@ services:
3434
browser-service:
3535
build:
3636
context: ./containers/browser-service
37-
args:
37+
args: {}
3838
cache_from:
3939
- browser-service:latest
4040
container_name: browser-service
@@ -60,7 +60,7 @@ services:
6060
novnc:
6161
build:
6262
context: ./containers/novnc
63-
args:
63+
args: {}
6464
cache_from:
6565
- novnc:latest
6666
container_name: novnc

stop.sh

Lines changed: 271 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,11 @@ set -e
55
RED='\033[0;31m'
66
GREEN='\033[0;32m'
77
YELLOW='\033[1;33m'
8+
BLUE='\033[0;34m'
89
NC='\033[0m' # No Color
910

11+
START_TIME=$(date +%s)
12+
1013
log() {
1114
echo -e "${GREEN}[coBoarding]${NC} $1"
1215
}
@@ -16,46 +19,304 @@ warn() {
1619
err() {
1720
echo -e "${RED}[coBoarding]${NC} $1" >&2
1821
}
22+
info() {
23+
echo -e "${BLUE}[coBoarding]${NC} $1"
24+
}
25+
26+
# Funkcja do wyświetlania paska postępu
27+
progress_bar() {
28+
local current=$1
29+
local total=$2
30+
local message=$3
31+
local bar_size=40
32+
local progress=$((current * bar_size / total))
33+
local percentage=$((current * 100 / total))
34+
35+
# Tworzenie paska postępu
36+
local bar="["
37+
for ((i=0; i<bar_size; i++)); do
38+
if [ $i -lt $progress ]; then
39+
bar+="="
40+
else
41+
bar+=" "
42+
fi
43+
done
44+
bar+="] ${percentage}%"
45+
46+
# Wyświetlanie paska postępu
47+
echo -ne "\r${BLUE}[coBoarding]${NC} ${message} ${bar}"
48+
49+
# Jeśli to ostatni krok, dodaj nową linię
50+
if [ $current -eq $total ]; then
51+
echo ""
52+
fi
53+
}
54+
55+
# Funkcja do zapisywania stanu kontenerów przed zatrzymaniem
56+
save_container_state() {
57+
local state_file="./container_state.log"
58+
info "Zapisywanie stanu kontenerów przed zatrzymaniem..."
59+
60+
{
61+
echo "=== Stan kontenerów przed zatrzymaniem ==="
62+
echo "Data: $(date '+%Y-%m-%d %H:%M:%S')"
63+
echo ""
64+
65+
echo "=== Uruchomione kontenery ==="
66+
docker ps -a
67+
echo ""
68+
69+
echo "=== Statystyki kontenerów ==="
70+
docker stats --no-stream
71+
echo ""
72+
73+
echo "=== Wolumeny Docker ==="
74+
docker volume ls | grep "coboarding"
75+
echo ""
76+
77+
echo "=== Obrazy Docker ==="
78+
docker images | grep -E 'llm-orchestrator-min|browser-service|novnc'
79+
echo ""
80+
} > "$state_file"
81+
82+
log "Stan kontenerów został zapisany w pliku: $state_file"
83+
}
84+
85+
# Funkcja do czyszczenia wolumenów
86+
clean_volumes() {
87+
info "Czyszczenie wolumenów Docker..."
88+
89+
local volumes=("coboarding-pip-cache" "coboarding-wheel-cache" "coboarding-models-cache" "coboarding-chrome-cache")
90+
local total=${#volumes[@]}
91+
local current=0
92+
93+
for volume in "${volumes[@]}"; do
94+
current=$((current + 1))
95+
progress_bar $current $total "Usuwanie wolumenów Docker..."
96+
97+
if docker volume inspect "$volume" &>/dev/null; then
98+
docker volume rm "$volume" &>/dev/null || warn "Nie udało się usunąć wolumenu $volume."
99+
fi
100+
done
101+
102+
log "Wolumeny Docker zostały wyczyszczone."
103+
}
104+
105+
# Parsowanie argumentów wiersza poleceń
106+
SAVE_STATE=false
107+
CLEAN_VOLUMES=false
108+
REMOVE_IMAGES=false
109+
FORCE=false
110+
VERBOSE=false
111+
112+
while [[ $# -gt 0 ]]; do
113+
case $1 in
114+
--save-state)
115+
SAVE_STATE=true
116+
info "Włączono zapisywanie stanu kontenerów."
117+
shift
118+
;;
119+
--clean-volumes)
120+
CLEAN_VOLUMES=true
121+
info "Włączono czyszczenie wolumenów."
122+
shift
123+
;;
124+
--remove-images)
125+
REMOVE_IMAGES=true
126+
info "Włączono usuwanie obrazów."
127+
shift
128+
;;
129+
--force|-f)
130+
FORCE=true
131+
info "Włączono tryb wymuszony (force)."
132+
shift
133+
;;
134+
--verbose|-v)
135+
VERBOSE=true
136+
info "Włączono tryb szczegółowy (verbose)."
137+
shift
138+
;;
139+
--help|-h)
140+
echo "Użycie: ./stop.sh [opcje]"
141+
echo "Opcje:"
142+
echo " --save-state Zapisuje stan kontenerów przed zatrzymaniem"
143+
echo " --clean-volumes Czyści wolumeny Docker"
144+
echo " --remove-images Usuwa obrazy Docker"
145+
echo " --force, -f Wymusza operacje bez pytania"
146+
echo " --verbose, -v Włącza tryb szczegółowy (verbose)"
147+
echo " --help, -h Wyświetla tę pomoc"
148+
exit 0
149+
;;
150+
*)
151+
err "Nieznana opcja: $1"
152+
echo "Użyj --help, aby wyświetlić dostępne opcje."
153+
exit 1
154+
;;
155+
esac
156+
done
157+
158+
# Zapisywanie stanu kontenerów przed zatrzymaniem
159+
if [ "$SAVE_STATE" = true ]; then
160+
save_container_state
161+
fi
162+
163+
info "=== Zatrzymywanie środowiska coBoarding ==="
164+
165+
# Wyświetlanie informacji o aktualnie uruchomionych kontenerach
166+
if [ "$VERBOSE" = true ]; then
167+
info "Aktualnie uruchomione kontenery:"
168+
docker ps
169+
echo ""
170+
fi
19171

20172
log "Zatrzymywanie wszystkich środowisk testowych docker-compose.<service>.yml..."
21173
SERVICES=(llm-orchestrator browser-service web-interface novnc video-chat web-terminal)
174+
TOTAL_SERVICES=${#SERVICES[@]}
175+
CURRENT=0
176+
22177
for SERVICE in "${SERVICES[@]}"; do
178+
CURRENT=$((CURRENT + 1))
23179
COMPOSE_FILE="docker-compose.$SERVICE.yml"
180+
24181
if [ -f "$COMPOSE_FILE" ]; then
25-
log "Zatrzymuję środowisko dla: $SERVICE ($COMPOSE_FILE) ..."
26-
docker-compose -f "$COMPOSE_FILE" down || warn "Nie udało się zatrzymać środowiska $SERVICE."
182+
if [ "$VERBOSE" = true ]; then
183+
info "Zatrzymuję środowisko dla: $SERVICE ($COMPOSE_FILE) ..."
184+
docker-compose -f "$COMPOSE_FILE" down || warn "Nie udało się zatrzymać środowiska $SERVICE."
185+
else
186+
progress_bar $CURRENT $TOTAL_SERVICES "Zatrzymywanie środowisk testowych..."
187+
docker-compose -f "$COMPOSE_FILE" down &>/dev/null || warn "Nie udało się zatrzymać środowiska $SERVICE."
188+
fi
27189
fi
28190
done
29191

30192
log "Zatrzymywanie środowiska minimalnego (docker-compose.min.yml)..."
31193
if [ -f "docker-compose.min.yml" ]; then
32-
docker-compose -f docker-compose.min.yml down || warn "Nie udało się zatrzymać środowiska minimalnego."
194+
if [ "$VERBOSE" = true ]; then
195+
docker-compose -f docker-compose.min.yml down || warn "Nie udało się zatrzymać środowiska minimalnego."
196+
else
197+
docker-compose -f docker-compose.min.yml down &>/dev/null || warn "Nie udało się zatrzymać środowiska minimalnego."
198+
fi
33199
fi
34200

35201
log "Zatrzymywanie wszystkich usług docker-compose..."
36-
docker compose down || docker-compose down || warn "docker-compose down nie powiodło się (brak pliku lub usługi)"
202+
if [ "$VERBOSE" = true ]; then
203+
docker compose down || docker-compose down || warn "docker-compose down nie powiodło się (brak pliku lub usługi)"
204+
else
205+
docker compose down &>/dev/null || docker-compose down &>/dev/null || warn "docker-compose down nie powiodło się (brak pliku lub usługi)"
206+
fi
37207

38208
log "Usuwanie wszystkich kontenerów dockera powiązanych z projektem..."
39209
PROJECT_CONTAINERS=$(docker ps -a --filter "name=coboarding" --format "{{.ID}}")
40210
if [ -n "$PROJECT_CONTAINERS" ]; then
41-
docker rm -f $PROJECT_CONTAINERS || warn "Nie udało się usunąć niektórych kontenerów."
211+
if [ "$VERBOSE" = true ]; then
212+
docker rm -f $PROJECT_CONTAINERS || warn "Nie udało się usunąć niektórych kontenerów."
213+
else
214+
docker rm -f $PROJECT_CONTAINERS &>/dev/null || warn "Nie udało się usunąć niektórych kontenerów."
215+
fi
42216
else
43217
warn "Brak kontenerów powiązanych z projektem coboarding."
44218
fi
45219

46220
# Usuwanie kontenerów z wersji minimalnej
47221
MIN_CONTAINERS="llm-orchestrator-min browser-service novnc"
222+
TOTAL_MIN_CONTAINERS=$(echo "$MIN_CONTAINERS" | wc -w)
223+
CURRENT=0
224+
48225
for CONTAINER in $MIN_CONTAINERS; do
226+
CURRENT=$((CURRENT + 1))
227+
49228
if docker ps -a --filter "name=$CONTAINER" -q | grep -q .; then
50-
log "Usuwanie kontenera $CONTAINER..."
51-
docker rm -f $CONTAINER || warn "Nie udało się usunąć kontenera $CONTAINER."
229+
if [ "$VERBOSE" = true ]; then
230+
info "Usuwanie kontenera $CONTAINER..."
231+
docker rm -f $CONTAINER || warn "Nie udało się usunąć kontenera $CONTAINER."
232+
else
233+
progress_bar $CURRENT $TOTAL_MIN_CONTAINERS "Usuwanie kontenerów minimalnych..."
234+
docker rm -f $CONTAINER &>/dev/null || warn "Nie udało się usunąć kontenera $CONTAINER."
235+
fi
52236
fi
53237
done
54238

55239
log "Usuwanie nieużywanych sieci docker..."
56-
docker network prune -f || warn "Nie udało się wyczyścić sieci docker."
240+
if [ "$VERBOSE" = true ]; then
241+
docker network prune -f || warn "Nie udało się wyczyścić sieci docker."
242+
else
243+
docker network prune -f &>/dev/null || warn "Nie udało się wyczyścić sieci docker."
244+
fi
245+
246+
# Czyszczenie wolumenów Docker
247+
if [ "$CLEAN_VOLUMES" = true ]; then
248+
if [ "$FORCE" = true ]; then
249+
clean_volumes
250+
else
251+
read -p "Czy na pewno chcesz usunąć wszystkie wolumeny Docker? (t/n): " answer
252+
if [[ "$answer" =~ ^[Tt]$ ]]; then
253+
clean_volumes
254+
else
255+
info "Pomijanie czyszczenia wolumenów Docker."
256+
fi
257+
fi
258+
else
259+
log "Usuwanie nieużywanych wolumenów docker..."
260+
if [ "$VERBOSE" = true ]; then
261+
docker volume prune -f || warn "Nie udało się wyczyścić wolumenów docker."
262+
else
263+
docker volume prune -f &>/dev/null || warn "Nie udało się wyczyścić wolumenów docker."
264+
fi
265+
fi
57266

58-
log "Usuwanie nieużywanych wolumenów docker..."
59-
docker volume prune -f || warn "Nie udało się wyczyścić wolumenów docker."
267+
# Usuwanie obrazów Docker
268+
if [ "$REMOVE_IMAGES" = true ]; then
269+
info "Usuwanie obrazów Docker..."
270+
271+
if [ "$FORCE" = true ]; then
272+
for image in "llm-orchestrator-min" "browser-service" "novnc"; do
273+
if docker images | grep -q "$image"; then
274+
if [ "$VERBOSE" = true ]; then
275+
info "Usuwanie obrazu $image..."
276+
docker rmi $image || warn "Nie udało się usunąć obrazu $image."
277+
else
278+
docker rmi $image &>/dev/null || warn "Nie udało się usunąć obrazu $image."
279+
fi
280+
fi
281+
done
282+
log "Obrazy Docker zostały usunięte."
283+
else
284+
read -p "Czy na pewno chcesz usunąć wszystkie obrazy Docker? (t/n): " answer
285+
if [[ "$answer" =~ ^[Tt]$ ]]; then
286+
for image in "llm-orchestrator-min" "browser-service" "novnc"; do
287+
if docker images | grep -q "$image"; then
288+
if [ "$VERBOSE" = true ]; then
289+
info "Usuwanie obrazu $image..."
290+
docker rmi $image || warn "Nie udało się usunąć obrazu $image."
291+
else
292+
docker rmi $image &>/dev/null || warn "Nie udało się usunąć obrazu $image."
293+
fi
294+
fi
295+
done
296+
log "Obrazy Docker zostały usunięte."
297+
else
298+
info "Pomijanie usuwania obrazów Docker."
299+
fi
300+
fi
301+
fi
60302

61303
log "Wszystkie usługi zatrzymane i kontenery usunięte."
304+
305+
# Wyświetlanie czasu wykonania skryptu
306+
END_TIME=$(date +%s)
307+
EXECUTION_TIME=$((END_TIME - START_TIME))
308+
info "Czas wykonania skryptu: ${EXECUTION_TIME}s"
309+
310+
# Wyświetlanie podsumowania
311+
info "=== Podsumowanie ==="
312+
info "- Wszystkie kontenery zostały zatrzymane i usunięte"
313+
if [ "$CLEAN_VOLUMES" = true ]; then
314+
info "- Wolumeny Docker zostały wyczyszczone"
315+
fi
316+
if [ "$REMOVE_IMAGES" = true ]; then
317+
info "- Obrazy Docker zostały usunięte"
318+
fi
319+
if [ "$SAVE_STATE" = true ]; then
320+
info "- Stan kontenerów został zapisany w pliku: ./container_state.log"
321+
fi
322+
info "Aby uruchomić środowisko ponownie, użyj: ./runmin.sh"

0 commit comments

Comments
 (0)