chore(docker): .dockerignore angepasst; lokale Build-Schritte in Rebuild-Skripten; Doku/README zu production vs production-prebuilt aktualisiert
This commit is contained in:
72
README.md
72
README.md
@@ -100,20 +100,51 @@ pnpm dev
|
||||
|
||||
## Docker Deployment
|
||||
|
||||
### Docker Build
|
||||
### Lokale Entwicklung mit Docker
|
||||
|
||||
Für schnelles lokales Testing mit vorgebauten Artefakten:
|
||||
|
||||
```bash
|
||||
# Docker Image erstellen
|
||||
docker build -t stargirlnails-booking .
|
||||
# 1. Baue Client und Server lokal
|
||||
pnpm install --frozen-lockfile
|
||||
pnpm run build
|
||||
|
||||
# Container starten
|
||||
docker run -d \
|
||||
--name stargirlnails-app \
|
||||
-p 3000:3000 \
|
||||
--env-file .env \
|
||||
stargirlnails-booking
|
||||
# 2. Baue und starte Container (nutzt production-prebuilt Stage)
|
||||
docker compose build
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
### Production-Deployment
|
||||
|
||||
Für Remote-Deployment (baut alles im Container):
|
||||
|
||||
```bash
|
||||
# Nutzt production Stage für vollständigen Build
|
||||
docker-compose -f docker-compose-prod.yml up --build -d
|
||||
```
|
||||
|
||||
**Wichtig:** `docker-compose-prod.yml` baut Client und Server im Container und benötigt keine lokalen Builds.
|
||||
|
||||
### Docker Build-Stages
|
||||
|
||||
Das Dockerfile definiert zwei relevante Workflows:
|
||||
- `production`: Vollständiger Build (Client + Server) innerhalb von Docker – langsamer, ideal für CI/CD
|
||||
- `production-prebuilt`: Lokaler Build der Artefakte (`dist/`, `server-dist/`) und Kopie in das Image – schneller für lokale Entwicklung
|
||||
|
||||
Warum `dist/` und `server-dist/` nicht in `.dockerignore` gehören: Diese Verzeichnisse werden im `production-prebuilt`-Workflow benötigt, damit sie beim `docker compose build` in das Image kopiert werden können.
|
||||
|
||||
Details siehe [`docs/docker-build-stages.md`](docs/docker-build-stages.md)
|
||||
|
||||
### Native Module Hinweise (bcrypt)
|
||||
|
||||
Die App verwendet das native Node-Modul `bcrypt`, das für Alpine Linux kompiliert werden muss.
|
||||
|
||||
- Beim ersten Start oder nach Dependency-Updates kann ein Rebuild notwendig sein.
|
||||
- In der `production` Stage wird `bcrypt` während des Docker-Builds kompiliert und verifiziert.
|
||||
- In der `production-prebuilt` Stage erfolgt eine Verifikation/Rebuild beim Container-Start, und der Start bricht ab, wenn `bcrypt` fehlt.
|
||||
|
||||
Siehe ausführliche Hinweise und Troubleshooting in [`docs/docker-build-stages.md`](docs/docker-build-stages.md).
|
||||
|
||||
### Docker Compose (empfohlen)
|
||||
|
||||
Erstelle eine `docker-compose.yml` Datei:
|
||||
@@ -170,6 +201,29 @@ chmod +x scripts/setup-caddy.sh
|
||||
- Überwache Container mit Health Checks
|
||||
- **Persistente Daten**: Der `.storage` Ordner wird als Volume gemountet, um Buchungen und Einstellungen zu erhalten
|
||||
|
||||
### Docker-Container startet nicht
|
||||
|
||||
**Symptom:** Container startet mit "Cannot find module" Fehlern
|
||||
|
||||
**Lösung:**
|
||||
- Lokal: Stelle sicher, dass `pnpm build` vor `docker-compose up` ausgeführt wurde
|
||||
- Production: Prüfe, dass `docker-compose-prod.yml` den `target: production` verwendet
|
||||
- Siehe [`docs/docker-build-stages.md`](docs/docker-build-stages.md) für Details
|
||||
- Nach Sicherheits- oder Dependency-Updates: `docker compose down && docker compose build --no-cache && docker compose up -d`
|
||||
- Verifikation: `docker compose exec stargirlnails node -e "require('bcrypt')"`
|
||||
|
||||
### Development-Workflow mit nativen Modulen
|
||||
|
||||
Wenn du ein natives Modul wie `bcrypt` hinzufügst oder updatest, ist ein Container-Rebuild erforderlich. Nutze dafür die Scripts:
|
||||
|
||||
```bash
|
||||
# Linux/macOS
|
||||
./scripts/rebuild-dev.sh
|
||||
|
||||
# Windows
|
||||
scripts\rebuild-dev.cmd
|
||||
```
|
||||
|
||||
## Features
|
||||
|
||||
### Buchungssystem
|
||||
|
Reference in New Issue
Block a user