Zum Inhalt

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

# Vom Host mit aktiviertem venv
mypy app/ --exclude migrations --ignore-missing-imports

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:

  1. Änderungsprotokoll der Bibliothek prüfen
  2. python3 scripts/update_vendor.py <bibliothek> <version> ausführen
  3. Das Skript lädt die Dateien herunter, entfernt das alte Verzeichnis und aktualisiert alle Templates
  4. Commit mit chore(deps): update <bibliothek> to <version>
  5. Den Renovate-Merge-Request schließen (der Commit aktualisiert package.json bereits)

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