Turtor Docs
Nasazení

Deploy skripty

Automatizované skripty pro nasazení

Deploy skript

Hlavní deploy skript se nachází v scripts/deploy.sh a obsluhuje celý lifecycle nasazení -- od buildu přes push do GHCR až po restart služeb na VPS.

Dostupné příkazy

Příkazpnpm aliasPopis
./scripts/deploy.shpnpm deployNasadí nejnovější obrazy z GHCR
./scripts/deploy.sh --buildpnpm deploy:buildBuild na VPS, push do GHCR, deploy
./scripts/deploy.sh --setuppnpm deploy:setupPrvotní nastavení VPS
./scripts/deploy.sh --envpnpm deploy:envAktualizace .env na VPS
./scripts/deploy.sh --ssl-Získání SSL certifikátů
./scripts/deploy.sh --migrate-Spuštění databázových migrací
./scripts/deploy.sh --logspnpm deploy:logsZobrazení logů API
./scripts/deploy.sh --statuspnpm deploy:statusStav kontejnerů

Typický deployment workflow

1. Build a deploy (nejčastější)

pnpm deploy:build

Tento příkaz provede:

  1. Načte build argumenty z .env.production (VITE_* proměnné)
  2. Přihlásí se do GHCR lokálně i na VPS
  3. Vytvoří/použije remote Docker builder (vps-builder)
  4. Sestaví API, Web a Admin obrazy na VPS (linux/amd64)
  5. Pushne obrazy do ghcr.io/<OWNER>/turtor-*
  6. Nahraje .env.production na VPS
  7. Stáhne nové obrazy na VPS a restartuje kontejnery
  8. Čeká na health check API (max 60 sekund)

2. Deploy existujících obrazů

pnpm deploy          # Deploy s tagem "latest"
./scripts/deploy.sh v1.2.3  # Deploy konkrétní verze

3. Spuštění migrací

./scripts/deploy.sh --migrate

Spustí node run-migrations.js uvnitř API kontejneru. Ověřuje, že API kontejner je spuštěný.

Vždy proveďte zálohu databáze před spuštěním migrací na produkci.

Prvotní nastavení VPS

pnpm deploy:setup

Setup provede:

  1. Vytvoří adresáře na VPS (/opt/apps/turtor)
  2. Nahraje docker-compose.yml z lovinka-infra
  3. Nahraje počáteční nginx konfigurace (HTTP only)
  4. Nahraje .env.production
  5. Vytvoří Docker proxy síť

Po dokončení je třeba:

# 1. Spustit infrastrukturní služby
ssh deploy@<VPS_IP> 'cd /opt/apps/turtor && docker compose up -d postgres redis'

# 2. Získat SSL certifikáty
./scripts/deploy.sh --ssl

# 3. Provést build a deploy
pnpm deploy:build

Health check

Po každém deployi skript automaticky kontroluje API health endpoint:

# Čeká max 60 sekund (12 pokusů po 5 sekundách)
curl -sf https://api.ckk.byadf.ai/api/v1/health

Pokud health check selže, skript skončí s chybou a doporučí kontrolu logů.

Konfigurace

Skript vyžaduje tyto soubory:

SouborÚčel
.env.productionProdukční environment proměnné
~/Documents/Work/lovinka-infra/Infrastrukturní konfigurace (nginx, compose)

Veškeré infrastrukturní změny se provádějí lokálně v repozitáři lovinka-infra a následně se nasazují na VPS. Nikdy neupravujte soubory přímo na serveru.

Příklady použití

# Kompletní build a deploy
pnpm deploy:build

# Pouze aktualizace env proměnných
pnpm deploy:env

# Kontrola stavu kontejnerů
pnpm deploy:status

# Sledování logů API
pnpm deploy:logs

# Sledování logů web kontejneru
./scripts/deploy.sh --logs web