diff --git a/README.md b/README.md index 1e2631a8ab0b4ba15dacb656a54fc885c7cf943b..4e146b147ce442b1e20e5ce80b15b31cf0bcb047 100644 --- a/README.md +++ b/README.md @@ -218,3 +218,20 @@ $ ./manage.py migrate AttributeError: 'DatabaseOperations' object has no attribute 'geo_db_type' ``` Dieser Fehler tritt auf, wenn man [PostGIS](https://postgis.net/)-Felder mit dem normalen Django-Postgres-Backend anlegen möchte. Statt dessen als Engine `django.contrib.gis.db.backends.postgis` verwenden. + +## Docker Image Abhängigkeiten + +Das Bild zeigt die aktuellen Docker Image Abhängigkeiten aus dem Multistage Dockerfile + + + +### Recreate image + +```bash +docker run \ + --rm \ + --user "$(id -u):$(id -g)" \ + --workdir /workspace \ + --volume "$(pwd)":/workspace \ + ghcr.io/patrickhoefler/dockerfilegraph:alpine -o png +``` diff --git a/deployment/README.md b/deployment/README.md index 8fdafb1ab44faaa7b54d89ecf76cca8ad430c049..e8ef2cd85294487770175f98cb4da4a88652b673 100644 --- a/deployment/README.md +++ b/deployment/README.md @@ -4,9 +4,14 @@ Deployment # Überblick Hub als auch PlainUI werden als Docker Container ausgerollt welcher vom GitLab CI erstellt wird. -Die Datenbank läuft separat (nicht im selben Docker Container). +Die Datenbank läuft separat und ist aktuell auf postgres mit der PostGIS Erweiterung eingeschränkt. -Der Docker-Container erwartet ein Verzeichnis mit einer `local_settings.py` in `/data/`, in dieser muss "IS_API", "IS_BACKOFFICE" und/oder "IS_FRONTEND" auf "True" gesetzt werden und die Datenbankkonfiguration gemacht werden: +Die Konfiguration des Docker-Containers kann über Umgebungsvariablen gesteuert werden. +Alternativ kann aich wie gehabt die Konfiguration mit einer `local_settings.py` Datein in `/data/` gesteuert weden. + +Egal welche der Methden gewählt wir, muss zumindest angegeben werden welche Funktionen auszurollen sind und wie die Datenbank zu erreichen ist. +Für die Umgebungsvariablen Konfiguration kann die `docker-compose.yml` als Beispiel zu rate gezogen werden. +Beispiel einer `local_settings.py`: ```python IS_API = False IS_BACKOFFICE = False @@ -32,7 +37,9 @@ DATABASES = { Allgemein: für ein normales Backup sollte einfach die Datenbank über Bordmittel gesichert werden (`pg_dump`). -Django hat da aber auch etwas eingebaut: +Django hat auch eine Funktion für den Export von Daten eingebaut, diese Variante ist allerdings nicht für den Produktiven Einsatz empfohlen. +Das Problem liegt hier in der Struktur der Daten bei der Wiederherstellung. Diese ist mit `dumpdata`/`loadata` nicht garaniert. +Grundsätzlich funktioniert es wie folgt: 1. Docker Container mit "debug" Kommando starten 2. `./manage.py dumpdata` mit natural keys und ohne Django-Interna laufen lassen diff --git a/docs/Dockerfile.png b/docs/Dockerfile.png new file mode 100644 index 0000000000000000000000000000000000000000..533f1443ef74fcf6e6169b819b07861d0dddbc85 Binary files /dev/null and b/docs/Dockerfile.png differ