deployment improved
This commit is contained in:
72
deployment.md
Normal file
72
deployment.md
Normal file
@@ -0,0 +1,72 @@
|
||||
# Deployment
|
||||
|
||||
## Voraussetzungen
|
||||
|
||||
- Docker + Docker Compose auf dem Zielrechner
|
||||
- Quellcode (git clone)
|
||||
|
||||
## Starten
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
docker compose logs -f
|
||||
```
|
||||
|
||||
## Stoppen
|
||||
|
||||
```bash
|
||||
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:**
|
||||
```bash
|
||||
docker run --rm -v krafttrainer_db-data:/data -v $(pwd):/backup \
|
||||
debian:bookworm-slim cp /data/krafttrainer.db /backup/krafttrainer.db.bak
|
||||
```
|
||||
|
||||
**Restore:**
|
||||
```bash
|
||||
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 build` → `frontend/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) |
|
||||
Reference in New Issue
Block a user