AttributeError: 'DatabaseOperations' object has no attribute 'geo_db_type'
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.
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

Hub als auch PlainUI werden als Docker Container ausgerollt welcher vom GitLab CI erstellt wird.
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
```python
IS_API=False
IS_API=False
IS_BACKOFFICE=False
IS_BACKOFFICE=False
...
@@ -32,7 +37,9 @@ DATABASES = {
...
@@ -32,7 +37,9 @@ DATABASES = {
Allgemein: für ein normales Backup sollte einfach die Datenbank über Bordmittel gesichert werden (`pg_dump`).
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
1. Docker Container mit "debug" Kommando starten
2.`./manage.py dumpdata` mit natural keys und ohne Django-Interna laufen lassen
2.`./manage.py dumpdata` mit natural keys und ohne Django-Interna laufen lassen