Skip to content
Snippets Groups Projects
Commit ac7099c2 authored by Roang's avatar Roang
Browse files

Update deployment documentation

parent 23ba0ab5
Branches
Tags
No related merge requests found
...@@ -218,3 +218,20 @@ $ ./manage.py migrate ...@@ -218,3 +218,20 @@ $ ./manage.py migrate
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
![Semantic description of image](/docs/Dockerfile.png "Docker dependencies")
### Recreate image
```bash
docker run \
--rm \
--user "$(id -u):$(id -g)" \
--workdir /workspace \
--volume "$(pwd)":/workspace \
ghcr.io/patrickhoefler/dockerfilegraph:alpine -o png
```
...@@ -4,9 +4,14 @@ Deployment ...@@ -4,9 +4,14 @@ Deployment
# Überblick # Überblick
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
......
docs/Dockerfile.png

35.1 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment