Zum Hauptinhalt springen

Deployment

Auf dem Server ist das Ziel bewusst anders als lokal:

  • kein permanenter Repo-Checkout
  • nur Compose-Dateien, .env und secrets/
  • Images kommen aus der Registry
  • ein zentraler Reverse Proxy im Infra-Layer routet Domains und /api

Zielpfad

Ein möglicher Zielpfad:

/opt/skintogo/
infra/
reverse-proxy/
portainer/
netdata/
dev/
stage/
prod/

Pro Umgebung liegen dort nur:

  • docker-compose.yml
  • docker-compose.server.yml
  • .env
  • secrets/

.env.server.example zeigt die dafür nötigen zusätzlichen Image- und Reverse-Proxy-Variablen.

Serverseitiges Update

Beispiel:

cd /opt/skintogo/prod
docker compose -f docker-compose.yml -f docker-compose.server.yml pull
docker compose -f docker-compose.yml -f docker-compose.server.yml up -d

Auf dem Dev-Server sollen Compose-Kommandos über den Wrapper laufen, siehe Dev-Server.

Erstes Dev-Server-Setup

Wenn unter /opt/skintogo/dev noch nichts liegt:

  1. Zielpfad anlegen:
sudo mkdir -p /opt/skintogo/dev/secrets
sudo chown -R "$USER":"$USER" /opt/skintogo/dev
  1. Compose-Dateien in den Zielpfad kopieren:
scp docker-compose.yml docker-compose.server.yml user@dein-server:/opt/skintogo/dev/
  1. Auf dem Server in /opt/skintogo/dev/.env eine Server-Konfiguration auf Basis von .env.server.example anlegen.

  2. Secret-Dateien in /opt/skintogo/dev/secrets/ schreiben, mindestens:

  • db_password
  • jwt_secret

Beispiele:

openssl rand -hex 32 > /opt/skintogo/dev/secrets/jwt_secret
printf '%s' 'ein-starkes-db-passwort' > /opt/skintogo/dev/secrets/db_password
  1. Externes Reverse-Proxy-Netz anlegen:
docker network create skintogo-reverse-proxy
  1. Falls die GHCR-Images nicht öffentlich sind, auf dem Server bei GHCR anmelden:
docker login ghcr.io
  1. Ersten manuellen Testlauf starten:
cd /opt/skintogo/dev
docker compose -f docker-compose.yml -f docker-compose.server.yml pull
docker compose -f docker-compose.yml -f docker-compose.server.yml up -d
docker compose -f docker-compose.yml -f docker-compose.server.yml logs -f

Wichtige Punkte

  • Ohne das externe Docker-Netz startet der serverseitige Compose-Stack nicht sauber.
  • Ohne zentralen Reverse Proxy laufen die Container zwar intern, aber die Domain ist noch nicht erreichbar.
  • Für dev sollte die Server-.env in der Regel FRONTEND_IMAGE=...:latest und BACKEND_IMAGE=...:latest verwenden.
  • Auf dem Server nicht bauen, sondern gepushte Images ziehen oder für Dev den direkten Deploy verwenden.