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
mainbranch - Development: Automaticky deploy při push do
devbranch - 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
- Production:
Postup:
- Push kód do
main(production) nebodev(development) branch - Cloudflare automaticky spustí build
- 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í vwrangler.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.tomlv 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
- Jdi na https://dash.cloudflare.com → Pages →
dna-cruises-web - Klikni na Connect to Git
- Vyber repository:
DnASound/navigator - 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)
- Root directory:
dna-cruises-load
- Jdi na https://dash.cloudflare.com → Pages →
dna-cruises-load - Klikni na Connect to Git
- Vyber repository:
DnASound/navigator - 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)
- Root directory:
dna-cruises-docs
- Jdi na https://dash.cloudflare.com → Pages →
dna-cruises-docs - Klikni na Connect to Git
- Vyber repository:
DnASound/navigator - 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+
- Root directory:
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-runpro 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:
- Jdi na https://dash.cloudflare.com → Workers & Pages →
dna-cruises-api - Klikni na Triggers → Routes → Add route
- Přidej route:
api.dna.cruises/*→dna-cruises-api
Development:
- Jdi na https://dash.cloudflare.com → Workers & Pages →
dna-cruises-api-dev - Klikni na Triggers → Routes → Add route
- Přidej route:
dev.api.dna.cruises/*→dna-cruises-api-dev
Pages
Production (branch: main):
dna-cruises-web:
- Jdi na https://dash.cloudflare.com → Pages →
dna-cruises-web - Klikni na Custom Domains → Set up a custom domain
- Přidej doménu:
dna.cruises
dna-cruises-load:
- Jdi na https://dash.cloudflare.com → Pages →
dna-cruises-load - Klikni na Custom Domains → Set up a custom domain
- Přidej doménu:
load.dna.cruises
Development (preview deployment z branch: dev):
dna-cruises-web (dev):
- Po vytvoření preview deploymentu z
devbranch jdi na Pages →dna-cruises-web→ Deployments - Najdi deployment z
devbranch (bude označen jako "Preview") - Klikni na deployment → Custom Domains → Set up a custom domain
- Přidej doménu:
dev.dna.cruises
dna-cruises-load (dev):
- Po vytvoření preview deploymentu z
devbranch jdi na Pages →dna-cruises-load→ Deployments - Najdi deployment z
devbranch - Klikni na deployment → Custom Domains → Set up a custom domain
- 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
- Jdi na Cloudflare Dashboard → Workers & Pages → [Worker name] → Versions
- Vyber předchozí verzi
- Klikni na Deploy
Pages
- Jdi na Cloudflare Dashboard → Pages → [Project name] → Deployments
- Najdi předchozí deployment
- Klikni na ... → Retry deployment nebo Promote to production
Best Practices
- Vždy testuj lokálně před deploymentem
- Používej feature branches a PRs pro review
- Zálohuj databázi před migracemi
- Monitoruj build logy po každém deployi
- Používej environment variables místo hardcoded values
- Nepoužívej secrets v kódu - používej Cloudflare Secrets
- Testuj na development prostředí před production deployem