Files
krafttrainer/deployment.md
2026-03-21 15:10:12 +01:00

1.6 KiB

Deployment

Voraussetzungen

  • Docker + Docker Compose auf dem Zielrechner
  • Quellcode (git clone)

Starten

docker compose up --build -d

Beim ersten Start:

  • Docker baut das Image (Frontend + Go-Binary, dauert ~2 Min.)
  • Migrations laufen automatisch beim Start
  • Server lauscht auf Port 8090

Nach Code-Änderungen

docker compose up --build -d

Docker-Layer-Cache beschleunigt den Rebuild:

  • go.mod unverändert → go mod download wird nicht wiederholt
  • pnpm-lock.yaml unverändert → pnpm install wird nicht wiederholt

Logs

docker compose logs -f

Stoppen

docker compose down        # Container stoppen (DB bleibt erhalten)
docker compose down -v     # Container + DB-Volume löschen (Datenverlust!)

Datenbank

Die SQLite-DB liegt im Docker-Volume db-data/data/krafttrainer.db im Container.

Backup:

docker run --rm -v krafttrainer_db-data:/data -v $(pwd):/backup \
  debian:bookworm-slim cp /data/krafttrainer.db /backup/krafttrainer.db.bak

Restore:

docker compose down
docker run --rm -v krafttrainer_db-data:/data -v $(pwd):/backup \
  debian:bookworm-slim cp /backup/krafttrainer.db.bak /data/krafttrainer.db
docker compose up -d

Image-Aufbau (3-Stage-Build)

Stage Basis Aufgabe
1 node:22-slim pnpm buildfrontend/dist/
2 golang:1.24-bookworm Frontend einbetten + go build (CGO für SQLite)
3 debian:bookworm-slim Nur Binary + glibc, ~100MB finales Image

Ports

Port Dienst
8090 HTTP-Server (API + Frontend)