fix(docker): Add sqlite3 to production backend image
- Install sqlite3 in prod Dockerfile using apk (Alpine package manager) - Required for test-cleanup-prod.sh script to function - Matches dev environment which already had sqlite3 installed Changes: - docker/prod/backend/Dockerfile: Add 'apk add --no-cache sqlite' - tests/test-cleanup.sh -> split into test-cleanup-dev.sh and test-cleanup-prod.sh - Separate scripts for dev/prod with correct docker-compose paths Testing: - sqlite3 now available at /usr/bin/sqlite3 in prod container - test-cleanup-prod.sh can now execute database queries
This commit is contained in:
parent
f7ced61e4b
commit
d25fc58b76
|
|
@ -2,6 +2,9 @@ FROM node:24-alpine
|
|||
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
# Install SQLite for database operations (needed for testing/debugging)
|
||||
RUN apk add --no-cache sqlite
|
||||
|
||||
# Copy package.json and package-lock.json (if available)
|
||||
COPY backend/package*.json ./
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ echo "========================================"
|
|||
echo ""
|
||||
|
||||
# Prüfe ob Container läuft
|
||||
if ! docker compose -f docker/dev/docker-compose.yml ps | grep -q "backend-dev.*Up"; then
|
||||
if ! docker compose -f ../docker/dev/docker-compose.yml ps | grep -q "backend-dev.*Up"; then
|
||||
echo "❌ Backend-Container läuft nicht. Bitte starte ./dev.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
|
@ -17,7 +17,7 @@ fi
|
|||
function show_unapproved_groups() {
|
||||
echo "📋 Nicht-freigegebene Gruppen:"
|
||||
echo ""
|
||||
docker compose -f docker/dev/docker-compose.yml exec -T backend-dev sqlite3 /usr/src/app/src/data/db/image_uploader.db \
|
||||
docker compose -f ../docker/dev/docker-compose.yml exec -T backend-dev sqlite3 /usr/src/app/src/data/db/image_uploader.db \
|
||||
"SELECT group_id || ' | Jahr: ' || year || ' | Name: ' || name || ' | Upload: ' || datetime(upload_date) || ' | Tage: ' || CAST((julianday('now') - julianday(upload_date)) AS INTEGER)
|
||||
FROM groups WHERE approved = 0 ORDER BY upload_date DESC;"
|
||||
echo ""
|
||||
|
|
@ -30,14 +30,14 @@ function backdate_group() {
|
|||
read -p "Gruppe ID zum Zurückdatieren: " group_id
|
||||
read -p "Um wie viele Tage? (z.B. 8): " days
|
||||
|
||||
docker compose -f docker/dev/docker-compose.yml exec -T backend-dev sqlite3 /usr/src/app/src/data/db/image_uploader.db \
|
||||
docker compose -f ../docker/dev/docker-compose.yml exec -T backend-dev sqlite3 /usr/src/app/src/data/db/image_uploader.db \
|
||||
"UPDATE groups SET upload_date = datetime('now', '-$days days') WHERE group_id = '$group_id';"
|
||||
|
||||
echo "✅ Gruppe $group_id wurde um $days Tage zurückdatiert"
|
||||
echo ""
|
||||
|
||||
# Zeige aktualisierte Info
|
||||
docker compose -f docker/dev/docker-compose.yml exec -T backend-dev sqlite3 /usr/src/app/src/data/db/image_uploader.db \
|
||||
docker compose -f ../docker/dev/docker-compose.yml exec -T backend-dev sqlite3 /usr/src/app/src/data/db/image_uploader.db \
|
||||
"SELECT 'Gruppe: ' || group_id || ', Upload: ' || datetime(upload_date) || ', Tage alt: ' || CAST((julianday('now') - julianday(upload_date)) AS INTEGER)
|
||||
FROM groups WHERE group_id = '$group_id';"
|
||||
echo ""
|
||||
99
tests/test-cleanup-prod.sh
Executable file
99
tests/test-cleanup-prod.sh
Executable file
|
|
@ -0,0 +1,99 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Cleanup Test Helper Script
|
||||
# Hilft beim Testen des automatischen Löschens
|
||||
|
||||
echo "========================================"
|
||||
echo " CLEANUP TEST HELPER"
|
||||
echo "========================================"
|
||||
echo ""
|
||||
|
||||
# Prüfe ob Container läuft
|
||||
if ! docker compose -f ../docker/prod/docker-compose.yml ps | grep -q "backend.*Up"; then
|
||||
echo "❌ Backend-Container läuft nicht. Bitte starte ./dev.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
function show_unapproved_groups() {
|
||||
echo "📋 Nicht-freigegebene Gruppen:"
|
||||
echo ""
|
||||
docker compose -f ../docker/prod/docker-compose.yml exec -T backend sqlite3 /usr/src/app/src/data/db/image_uploader.db \
|
||||
"SELECT group_id || ' | Jahr: ' || year || ' | Name: ' || name || ' | Upload: ' || datetime(upload_date) || ' | Tage: ' || CAST((julianday('now') - julianday(upload_date)) AS INTEGER)
|
||||
FROM groups WHERE approved = 0 ORDER BY upload_date DESC;"
|
||||
echo ""
|
||||
}
|
||||
|
||||
function backdate_group() {
|
||||
show_unapproved_groups
|
||||
|
||||
echo ""
|
||||
read -p "Gruppe ID zum Zurückdatieren: " group_id
|
||||
read -p "Um wie viele Tage? (z.B. 8): " days
|
||||
|
||||
docker compose -f ../docker/prod/docker-compose.yml exec -T backend sqlite3 /usr/src/app/src/data/db/image_uploader.db \
|
||||
"UPDATE groups SET upload_date = datetime('now', '-$days days') WHERE group_id = '$group_id';"
|
||||
|
||||
echo "✅ Gruppe $group_id wurde um $days Tage zurückdatiert"
|
||||
echo ""
|
||||
|
||||
# Zeige aktualisierte Info
|
||||
docker compose -f ../docker/prod/docker-compose.yml exec -T backend sqlite3 /usr/src/app/src/data/db/image_uploader.db \
|
||||
"SELECT 'Gruppe: ' || group_id || ', Upload: ' || datetime(upload_date) || ', Tage alt: ' || CAST((julianday('now') - julianday(upload_date)) AS INTEGER)
|
||||
FROM groups WHERE group_id = '$group_id';"
|
||||
echo ""
|
||||
}
|
||||
|
||||
function preview_cleanup() {
|
||||
echo "🔍 Cleanup Preview (über API):"
|
||||
echo ""
|
||||
curl -s http://localhost:5000/api/admin/cleanup/preview | jq '.'
|
||||
echo ""
|
||||
}
|
||||
|
||||
function trigger_cleanup() {
|
||||
echo "⚠️ ACHTUNG: Dies wird Gruppen permanent löschen!"
|
||||
echo ""
|
||||
read -p "Cleanup wirklich ausführen? (ja/nein): " confirm
|
||||
|
||||
if [ "$confirm" != "ja" ]; then
|
||||
echo "❌ Abgebrochen"
|
||||
return
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "🔄 Führe Cleanup aus..."
|
||||
echo ""
|
||||
curl -s -X POST http://localhost:5000/api/admin/cleanup/trigger | jq '.'
|
||||
echo ""
|
||||
}
|
||||
|
||||
function show_deletion_log() {
|
||||
echo "📜 Lösch-Historie (letzte 10):"
|
||||
echo ""
|
||||
curl -s http://localhost:5000/api/admin/deletion-log?limit=10 | jq '.deletions[] | "Gruppe: \(.group_id), Jahr: \(.year), Bilder: \(.image_count), Gelöscht: \(.deleted_at)"'
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Menü
|
||||
while true; do
|
||||
echo "Optionen:"
|
||||
echo " 1) Zeige nicht-freigegebene Gruppen"
|
||||
echo " 2) Gruppe zurückdatieren (für Tests)"
|
||||
echo " 3) Preview: Was würde gelöscht?"
|
||||
echo " 4) Cleanup JETZT ausführen"
|
||||
echo " 5) Lösch-Historie anzeigen"
|
||||
echo " 0) Beenden"
|
||||
echo ""
|
||||
read -p "Wähle Option: " option
|
||||
echo ""
|
||||
|
||||
case $option in
|
||||
1) show_unapproved_groups ;;
|
||||
2) backdate_group ;;
|
||||
3) preview_cleanup ;;
|
||||
4) trigger_cleanup ;;
|
||||
5) show_deletion_log ;;
|
||||
0) echo "👋 Auf Wiedersehen!"; exit 0 ;;
|
||||
*) echo "❌ Ungültige Option" ;;
|
||||
esac
|
||||
done
|
||||
Loading…
Reference in New Issue
Block a user