Nützliche Befehle¶
Kurzreferenz für häufige Bifolk-Entwicklungs- und Administrationsbefehle.
Zielgruppe: Entwickler, Systemadministratoren
Umgebungseinrichtung¶
# Docker-Compose-Kontext für Entwicklung setzen
export COMPOSE_FILE=docker/compose-developement/docker-compose.yml
export COMPOSE_PROJECT_NAME=bifolk
# Python Virtual Environment aktivieren (für Host-seitige Tools)
source venv/bin/activate
Container-Verwaltung¶
# Dienste starten
docker compose up -d
# Dienste stoppen
docker compose stop
# Container und Netzwerke entfernen
docker compose down
# Neu bauen und starten
docker compose down && docker compose build && docker compose up -d
# Logs anzeigen (Follow-Modus)
docker compose logs -f
# Container-Status prüfen
docker compose ps
Django-Verwaltung¶
Note
Alle docker compose exec-Befehle für bifolk-app müssen -u bifolk enthalten.
Der Container läuft mit cap_drop: ALL, wodurch die DAC_OVERRIDE-Fähigkeit entfernt wird.
Ohne diese kann der standardmäßige Root-Benutzer bifolk.json nicht lesen (Berechtigungen: 600, Eigentümer: bifolk).
# Migrationen ausführen
docker compose exec -u bifolk bifolk-app python manage.py migrate
# Migrationen erstellen
docker compose exec -u bifolk bifolk-app python manage.py makemigrations
# Migrationsstatus anzeigen
docker compose exec -u bifolk bifolk-app python manage.py showmigrations
# Superuser erstellen
docker compose exec -u bifolk bifolk-app python manage.py createsuperuser
# Statische Dateien sammeln
docker compose exec -u bifolk bifolk-app python manage.py collectstatic --no-input
# Django-Systemprüfung
docker compose exec -u bifolk bifolk-app python manage.py check
# Beispieldaten laden
docker compose exec -u bifolk bifolk-app python manage.py load_sample_data
# Abgelaufene Sitzungen löschen
docker compose exec -u bifolk bifolk-app python manage.py clearsessions
Organisations-Benutzerverwaltung¶
# Benutzer einer Organisation als Mitglied hinzufügen (Standardrolle)
docker compose exec -u bifolk bifolk-app python manage.py set_user_role_in_org john 3
# Benutzer mit einer bestimmten Rolle hinzufügen (owner, admin, member, viewer)
docker compose exec -u bifolk bifolk-app python manage.py set_user_role_in_org john 3 --role admin
# Organisation nach Name statt nach ID suchen
docker compose exec -u bifolk bifolk-app python manage.py set_user_role_in_org john "Marias Imkerei"
# Rolle eines bestehenden Benutzers aktualisieren
docker compose exec -u bifolk bifolk-app python manage.py set_user_role_in_org john 3 --role viewer
# Benutzer aus einer Organisation entfernen
docker compose exec -u bifolk bifolk-app python manage.py set_user_role_in_org john 3 --remove
Tests¶
# Vollständige Testsuite ausführen (optimierte Einstellungen)
docker compose exec -u bifolk bifolk-app bash -c \
"DJANGO_SETTINGS_MODULE=bifolk.settings_test python manage.py test"
# Tests für eine bestimmte App ausführen
docker compose exec -u bifolk bifolk-app bash -c \
"DJANGO_SETTINGS_MODULE=bifolk.settings_test python manage.py test hives"
# Bestimmte Testklasse ausführen
docker compose exec -u bifolk bifolk-app bash -c \
"DJANGO_SETTINGS_MODULE=bifolk.settings_test python manage.py test hives.tests.test_batch_models.BatchModelTests"
# Beim ersten Fehler stoppen
docker compose exec -u bifolk bifolk-app bash -c \
"DJANGO_SETTINGS_MODULE=bifolk.settings_test python manage.py test --failfast"
# Ausführliche Ausgabe
docker compose exec -u bifolk bifolk-app bash -c \
"DJANGO_SETTINGS_MODULE=bifolk.settings_test python manage.py test -v 2"
Tip
Verwenden Sie bifolk.settings_test für schnellere Testausführung (optimiertes Passwort-Hashing, In-Memory-Datenbank). Siehe app/bifolk/settings_test.py für Details.
Typprüfung¶
Datenbankoperationen¶
SQLite (Entwicklung)¶
# SQLite-Shell aufrufen
docker compose exec -u bifolk bifolk-app sqlite3 /bifolk/db/db.sqlite3
# Häufige SQLite-Befehle
# .tables - Alle Tabellen auflisten
# .schema <tabellenname> - Tabellenschema anzeigen
# SELECT * FROM auth_user; - Benutzer abfragen
# .quit - Beenden
PostgreSQL (Produktion)¶
# PostgreSQL-Shell aufrufen
docker compose exec bifolk-db psql -U bifolk -d bifolk
# Datenbankgröße
docker compose exec bifolk-db psql -U bifolk -d bifolk -c \
"SELECT pg_size_pretty(pg_database_size('bifolk'));"
# Vacuum und Analyze
docker compose exec bifolk-db psql -U bifolk -d bifolk -c "VACUUM ANALYZE;"
# Schnelles Backup
docker compose exec bifolk-db pg_dump -U bifolk bifolk > backup-$(date +%Y%m%d).sql
Übersetzungen¶
# Übersetzungsnachrichten generieren
cd app && python manage.py makemessages -l de --ignore=venv
# Übersetzungen kompilieren
cd app && python manage.py compilemessages -l de
# Übersetzungsabdeckung prüfen
python scripts/translation/check_translations.py
Migrationsskripte¶
# Ausstehende Migrationen prüfen (Host mit venv)
bash scripts/check_migrations.sh
# Neue Migrationen generieren (Host mit venv)
bash scripts/generate_migrations.sh
# Dateiberechtigungen setzen
bash scripts/bifolk_set_permissions.sh
Vendor-Bibliotheken¶
Frontend-Bibliotheken (Bootstrap, Chart.js, Leaflet usw.) werden direkt in app/home/static/vendor/ versioniert — Node.js oder npm install sind nicht erforderlich. Renovate Bot überwacht package.json auf neue Versionen und öffnet bei Bedarf einen Merge Request.
# Aktuelle Versionen mit den neuesten auf npm vergleichen
python3 scripts/update_vendor.py --check
# Eine einzelne Bibliothek aktualisieren
python3 scripts/update_vendor.py bootstrap 5.3.9
# Alle Bibliotheken auf die Versionen in package.json synchronisieren
python3 scripts/update_vendor.py --sync
Vorgehen, wenn Renovate Bot einen Merge Request öffnet:
- Änderungsprotokoll der Bibliothek prüfen
python3 scripts/update_vendor.py <bibliothek> <version>ausführen- Das Skript lädt die Dateien herunter, entfernt das alte Verzeichnis und aktualisiert alle Templates
- Commit mit
chore(deps): update <bibliothek> to <version> - Den Renovate-Merge-Request schließen (der Commit aktualisiert
package.jsonbereits)
Docker-Compose-Konfigurationen¶
| Verzeichnis | Datenbank | Zweck |
|---|---|---|
docker/compose-developement/ |
SQLite | Lokale Entwicklung |
docker/compose-postgres/ |
PostgreSQL | Produktionsähnliche Tests |
Konfigurationen wechseln¶
# Entwicklung (Standard)
export COMPOSE_FILE=docker/compose-developement/docker-compose.yml
# PostgreSQL
export COMPOSE_FILE=docker/compose-postgres/docker-compose.yml
# Dann docker compose wie gewohnt verwenden
docker compose up -d
Nützliche Einzeiler¶
# Ausstehende Migrationen zählen
docker compose exec -u bifolk bifolk-app python manage.py showmigrations | grep "\[ \]" | wc -l
# Django-Version
docker compose exec -u bifolk bifolk-app python -c "import django; print(django.get_version())"
# Installierte Pakete auflisten
docker compose exec -u bifolk bifolk-app pip list
# Schnelles SQLite-Backup (Entwicklung)
docker cp bifolk-app:/bifolk/db/db.sqlite3 ./backup/db-$(date +%Y%m%d).sqlite3
# Neu starten und Logs verfolgen
docker restart bifolk-app && docker logs bifolk-app -f
# Gesundheit aller Bifolk-Container prüfen
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | grep bifolk