-
Notifications
You must be signed in to change notification settings - Fork 2
Local Development
Stelle sicher das die Datenbank gestartet und die Migrationen durchgeführt wurden.
make setup
# Führe Migrationen aus
make migrate/reset && make migrate/up && make seed/up
make run # execute binary
make run/live # execute air for hot reload
make run/docker ENV=[dev,stage,prod] # execute over docker (default dev)Es werden folgende Dependencies benötigt, um das Backend zu starten:
- Golang als Programmiersprache
- Make als Build Helper
- Docker nicht zwingend benötigt aber stark empfohlen
Die Installation ist vom verwendetet Betriebssystem abhängig und wird hier nicht weiter beschriebe (siehe Golang Doku). Die Tools können über make wie folgt installiert werden.
make setup # unter linux
make setup/macos # unter macOS
make setup/ci # setup für ci pipeline (enthält keine developer tools)make setup installiert alle benötigten Tools. Weiter benötigten Abhängigkeiten, welche abhängig vom System sind, werden im nachfolgenden Kapitel beschrieben.
Unter Linux müssen noch zusätzlich weitere Dependencies installiert werden
yq
wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq && \
chmod +x /usr/bin/yq
make setup/macos installiert mittels brew alle weiten benötigten Abhängigkeiten. Stelle sicher, das brew aktiv ist. https://brew.sh/
...
Die Konfigurationsdateien liegen unter config/ und sind in diesen Repositorie verschlüsselt. Die Konfigurationen können mit sops entschlüsselt werden. Damit die Konfigurationen entschlüsselt werden können, muss der private Key vorhanden sein. Der private Key liegt an einem sicheren Ort (Vaultwarden) und kann von dort heruntergeladen werden. Der Key muss in der Datei $XDG_CONFIG_HOME/age/keys.txt hinterlegt werden.
make config/dec ENV=[dev,stage,prod] # default devmake entschlüsselt die Konfigurationen und legt sie unter config/ ab. Wird die Konfiguration nicht entschlüsselt, wird die Anwendung nicht starten. Wird die Konfiguration angepasst, muss diese wieder verschlüsselt werden, damit sie in das Repository eingecheckt werden kann.
make config/all # verschlüsselt alle Konfigurationen
make config/enc ENV=[dev,stage,prod] # default devWeitere Informationen zu der Konfiguration sind im Wiki zu finden. (TODO: Link)
Die Anwendung benötigt verschiedene Infrastrukturkomponenten, um zu funktionieren. Die Infrastrukturkomponenten sind in Docker Containern verpackt und können mittels docker-compose gestartet werden.
make infra/up # startet die Infrastruktur
make infra/down # stoppt die InfrastrukturDie Infrastruktur besteht aus folgenden Komponenten:
-
postgresals Datenbank -
pgadminals Datenbankverwaltung
Innerhalb der Infrastrukturkomponenten in Docker Compose wird eine Postgres Datenbank gestartet. Die Datenbank verwendet die Standardkonfigurationen und kann über pgadmin verwaltet werden. Die Datenbank wird mit den Migrationsdateien initialisiert.
make migrate/reset && make migrate/up && make seed/upDie Datenbank kann über pgadmin verwaltet werden. pgadmin ist ein Webinterface für die Verwaltung von Postgres Datenbanken. Das Webinterface ist unter http://localhost:5050 erreichbar. Die Zugangsdaten sind in der Konfiguration hinterlegt.
Die Anwendung kann auch über Docker gestartet werden. Dazu wird das Docker Image gebaut und gestartet. Dies hat den Vorteil, dass die Anwendung in einer isolierten Umgebung läuft und keine Abhängigkeiten auf dem Hostsystem installiert werden müssen. Somit müssen keine Systemabhängigkeiten wie proj oder geos installiert werden.
make run/docker ENV=[dev,stage,prod] # default devNun kann die Anwendung gestartet werden, wenn alle Konfigurationen wie Datenbank und Zugangsdaten eingerichtet sind. Gestartet wird die Go Anwendung mittels go run main.go oder mittels air. air bietet eine Hot Reload variante für Golang Anwendungen.
make run # execute binary
make run/live # execute air for hot reload