Skip to content
This repository was archived by the owner on Oct 24, 2025. It is now read-only.

Local Development

Cedrik Hoffmann edited this page Nov 24, 2024 · 34 revisions

TL;DR

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)

Vorbereitung

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.

Linux Setup

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
geos

Arch Linux

sudo pacman -S geos

Ubuntu

sudo apt install libgeos-dev

Alpine

apk add geos-dev
proj

Arch Linux

sudo pacman -S proj

Ubuntu

sudo apt install libproj-dev

Alpine

apk add proj-dev
sops/age

Arch Linux

sudo pacman -S sops age

Ubuntu

sudo apt install sops age

macOS Setup

make setup/macos installiert mittels brew alle weiten benötigten Abhängigkeiten. Stelle sicher, das brew aktiv ist. https://brew.sh/

Windows Setup

...

Konfiguration

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 dev

make 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 dev

Weitere Informationen zu der Konfiguration sind im Wiki zu finden. (TODO: Link)

Infrastruktur

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 Infrastruktur

Die Infrastruktur besteht aus folgenden Komponenten:

  • postgres als Datenbank
  • pgadmin als Datenbankverwaltung

Datenbank

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/up

pgAdmin

Die 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.

Starten

🐳 Docker

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 dev

🚀 Local

Nun 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

Clone this wiki locally