Přeskočit na hlavní obsah

Deployment Guide

Tento dokument popisuje, jak deployovat DnA Cruises systém do produkce.

Přehled​

Systém se skládá z:

  • Cloudflare Workers - API backend
  • Cloudflare Pages - Frontend aplikace (web, load, docs)
  • Cloudflare D1 - SQLite databáze
  • Cloudflare R2 - Object storage pro soubory

Workers API Deployment​

Automatický deployment (doporučeno)​

Workers jsou automaticky deployovány přes Cloudflare Workers Builds při push do GitHub.

Konfigurace:

  • Production: Automaticky deploy při push do main branch
  • Development: Automaticky deploy při push do dev branch
  • Root directory: workers/api
  • Deploy commands:
    • Production: node ../../scripts/inject-build-info.js wrangler.toml && npx wrangler deploy --env production
    • Development: node ../../scripts/inject-build-info.js wrangler.toml && npx wrangler deploy --env development

Postup:

  1. Push kód do main (production) nebo dev (development) branch
  2. Cloudflare automaticky spustí build
  3. Build log je dostupný v Cloudflare Dashboard → Workers & Pages → [Worker name] → Builds

Manuální deployment​

cd workers/api

# Development deployment
npx wrangler deploy --env development

# Production deployment
npx wrangler deploy --env production

Bindings​

Bindings (D1, R2, environment variables) se automaticky přenášejí z wrangler.toml při každém deployi.

Důležité:

  • Deploy command MUSÍ obsahovat --env <environment> flag
  • Bindings se přenášejí z [env.production] nebo [env.development] sekcí v wrangler.toml
  • Bindings se nemusí zobrazovat v Dashboardu, ale jsou aktivní a funkční
  • V build logu uvidíš potvrzení všech bindings při deployi

Environment Variables a Secrets​

Environment Variables:

  • Nastavují se v Cloudflare Dashboard → Workers & Pages → [Worker name] → Settings → Variables
  • Nebo v wrangler.toml v sekci [env.production.vars] nebo [env.development.vars]

Secrets:

  • Nastavují se přes Wrangler CLI: wrangler secret put SECRET_NAME --env production
  • Nebo v Cloudflare Dashboard → Workers & Pages → [Worker name] → Settings → Variables → Secrets

Příklad:

cd workers/api

# Set JWT_SECRET pro production
wrangler secret put JWT_SECRET --env production

# Set JWT_SECRET pro development
wrangler secret put JWT_SECRET --env development

Pages Deployment​

Automatický deployment (doporučeno)​

Pages jsou automaticky deployovány při push do GitHub, pokud jsou připojené k repository.

Konfigurace pro každý Pages projekt:

dna-cruises-web​

  1. Jdi na https://dash.cloudflare.com → Pages → dna-cruises-web
  2. Klikni na Connect to Git
  3. Vyber repository: DnASound/navigator
  4. Nakonfiguruj build settings:
    • Root directory: / (nechat prázdné)
    • Build command: cd apps/web && npm install --ignore-engines && npm run build
    • Build output directory: apps/web/.next
    • Production branch: main
    • Environment variables:
      • SKIP_DEPENDENCY_INSTALL = true (Production i Preview)

dna-cruises-load​

  1. Jdi na https://dash.cloudflare.com → Pages → dna-cruises-load
  2. Klikni na Connect to Git
  3. Vyber repository: DnASound/navigator
  4. Nakonfiguruj build settings:
    • Root directory: /
    • Build command: cd apps/load && npm install --ignore-engines && npm run build
    • Build output directory: apps/load/.next
    • Production branch: main
    • Environment variables:
      • SKIP_DEPENDENCY_INSTALL = true (Production i Preview)

dna-cruises-docs​

  1. Jdi na https://dash.cloudflare.com → Pages → dna-cruises-docs
  2. Klikni na Connect to Git
  3. Vyber repository: DnASound/navigator
  4. Nakonfiguruj build settings:
    • Root directory: /
    • Build command: cd apps/docs && npm install && npm run build
    • Build output directory: apps/docs/build
    • Production branch: main
    • Environment variables:
      • SKIP_DEPENDENCY_INSTALL = true (Production i Preview)
      • NODE_VERSION = 20 (Production i Preview) - DŮLEŽITÉ: Docusaurus vyžaduje Node 20+

Manuální deployment​

# Web app
cd apps/web
npx wrangler pages deploy .next --project-name=dna-cruises-web

# Load app
cd apps/load
npx wrangler pages deploy .next --project-name=dna-cruises-load

# Docs
cd apps/docs
npx wrangler pages deploy build --project-name=dna-cruises-docs

Poznámka: Nejdřív musíš buildnout aplikaci (npm run build).

Database Migrations​

Lokální migrace (development)​

cd workers/api
wrangler d1 migrations apply dna-cruises-dev --local

Production migrace​

cd workers/api
wrangler d1 migrations apply dna-cruises-prod --remote

Důležité:

  • Vždy zkontroluj migrace lokálně před production deployem
  • Production migrace jsou nevratné - zálohuj databázi před migrací
  • Použij --dry-run pro testování: wrangler d1 migrations apply dna-cruises-prod --remote --dry-run

Import inventory dat​

cd packages/db
node scripts/migrate-inventory.js

Nebo použij D1 SQL editor v Cloudflare Dashboard pro manuální import.

Custom Domény​

Workers (API)​

Production:

  1. Jdi na https://dash.cloudflare.com → Workers & Pages → dna-cruises-api
  2. Klikni na Triggers → Routes → Add route
  3. Přidej route: api.dna.cruises/* → dna-cruises-api

Development:

  1. Jdi na https://dash.cloudflare.com → Workers & Pages → dna-cruises-api-dev
  2. Klikni na Triggers → Routes → Add route
  3. Přidej route: dev.api.dna.cruises/* → dna-cruises-api-dev

Pages​

Production (branch: main):

dna-cruises-web:

  1. Jdi na https://dash.cloudflare.com → Pages → dna-cruises-web
  2. Klikni na Custom Domains → Set up a custom domain
  3. Přidej doménu: dna.cruises

dna-cruises-load:

  1. Jdi na https://dash.cloudflare.com → Pages → dna-cruises-load
  2. Klikni na Custom Domains → Set up a custom domain
  3. Přidej doménu: load.dna.cruises

Development (preview deployment z branch: dev):

dna-cruises-web (dev):

  1. Po vytvoření preview deploymentu z dev branch jdi na Pages → dna-cruises-web → Deployments
  2. Najdi deployment z dev branch (bude označen jako "Preview")
  3. Klikni na deployment → Custom Domains → Set up a custom domain
  4. Přidej doménu: dev.dna.cruises

dna-cruises-load (dev):

  1. Po vytvoření preview deploymentu z dev branch jdi na Pages → dna-cruises-load → Deployments
  2. Najdi deployment z dev branch
  3. Klikni na deployment → Custom Domains → Set up a custom domain
  4. Přidej doménu: dev.load.dna.cruises

Monitoring a Logging​

Workers Logs​

Workers logy jsou dostupné v:

  • Cloudflare Dashboard → Workers & Pages → [Worker name] → Logs
  • Nebo přes Wrangler CLI: wrangler tail --env production

Pages Logs​

Pages logy jsou dostupné v:

  • Cloudflare Dashboard → Pages → [Project name] → Deployments → [Deployment] → View build logs

Build Status​

Build status je dostupný v:

  • Cloudflare Dashboard → Workers & Pages → [Worker name] → Builds (pro Workers)
  • Cloudflare Dashboard → Pages → [Project name] → Deployments (pro Pages)

Rollback​

Workers​

  1. Jdi na Cloudflare Dashboard → Workers & Pages → [Worker name] → Versions
  2. Vyber předchozí verzi
  3. Klikni na Deploy

Pages​

  1. Jdi na Cloudflare Dashboard → Pages → [Project name] → Deployments
  2. Najdi předchozí deployment
  3. Klikni na ... → Retry deployment nebo Promote to production

Best Practices​

  1. Vždy testuj lokálně před deploymentem
  2. Používej feature branches a PRs pro review
  3. Zálohuj databázi před migracemi
  4. Monitoruj build logy po každém deployi
  5. Používej environment variables místo hardcoded values
  6. Nepoužívej secrets v kódu - používej Cloudflare Secrets
  7. Testuj na development prostředí před production deployem