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říkaz | pnpm alias | Popis |
|---|---|---|
./scripts/deploy.sh | pnpm deploy | Nasadí nejnovější obrazy z GHCR |
./scripts/deploy.sh --build | pnpm deploy:build | Build na VPS, push do GHCR, deploy |
./scripts/deploy.sh --setup | pnpm deploy:setup | Prvotní nastavení VPS |
./scripts/deploy.sh --env | pnpm deploy:env | Aktualizace .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 --logs | pnpm deploy:logs | Zobrazení logů API |
./scripts/deploy.sh --status | pnpm deploy:status | Stav kontejnerů |
Typický deployment workflow
1. Build a deploy (nejčastější)
pnpm deploy:buildTento příkaz provede:
- Načte build argumenty z
.env.production(VITE_* proměnné) - Přihlásí se do GHCR lokálně i na VPS
- Vytvoří/použije remote Docker builder (
vps-builder) - Sestaví API, Web a Admin obrazy na VPS (linux/amd64)
- Pushne obrazy do
ghcr.io/<OWNER>/turtor-* - Nahraje
.env.productionna VPS - Stáhne nové obrazy na VPS a restartuje kontejnery
- Č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í verze3. Spuštění migrací
./scripts/deploy.sh --migrateSpustí 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:setupSetup provede:
- Vytvoří adresáře na VPS (
/opt/apps/turtor) - Nahraje
docker-compose.ymlz lovinka-infra - Nahraje počáteční nginx konfigurace (HTTP only)
- Nahraje
.env.production - Vytvoří Docker
proxysíť
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:buildHealth 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/healthPokud health check selže, skript skončí s chybou a doporučí kontrolu logů.
Konfigurace
Skript vyžaduje tyto soubory:
| Soubor | Účel |
|---|---|
.env.production | Produkč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