Provoz a nasazení

Požadavky

  • Rust (edition 2024)
  • Node.js (build Vue klienta — Dockerfile používá Node image)
  • PostgreSQL
  • Docker + Docker Compose (pro kontejnerizované nasazení)

Proměnné prostředí

ProměnnáPopisDefault
DATABASE_URLPostgreSQL connection string(povinné — docker-compose nastavuje postgres://blog:blog@db:5432/blog)
RUST_LOGLog level filtrsite=debug,tower_http=debug,info
PORTHTTP listen port3000
NAMESPACEVybírá assets/<NAMESPACE>/{templates,css,js,img} bundlecommon
SERPER_API_KEYVolitelné — zapne web search nástroj v AI assistantovi(nenastaveno)

Lokální vývoj

# 1) Build Vue klienta — embeduje se do binárky
cd client
npm ci
npm run build
cd ..

# 2) Spustit server (vyžaduje DATABASE_URL v .env nebo env)
cargo run --bin site_server

# Ověření kompilace bez spuštění
cargo check

Server poslouchá na http://localhost:3000. Migrace proběhnou automaticky při startu.

Pro práci na klientovi bez restartu serveru lze spustit Vite dev server v client/ (npm run dev); buildovaná verze v client/dist/ se ale embeduje až při kompilaci serverové binárky.

Vytvoření uživatele

# Bez Dockeru
cargo run --bin site_cli -- create-user <username> <password>
cargo run --bin site_cli -- change-password <username> <password>

# S Docker Compose
docker compose exec app ./site_cli create-user <username> <password>

Migrace

Migrace běží automaticky při startu serveru (Migrator::up). Ruční správa:

cargo run --bin site_migration              # apply all pending
cargo run --bin site_migration -- down      # rollback last
cargo run --bin site_migration -- fresh     # reset & reapply vše
cargo run --bin site_migration -- status    # zobraz stav

# S Docker Compose
docker compose exec app ./site_migration

Docker Compose

docker-compose.yml definuje dvě služby:

  • db — PostgreSQL 17-alpine, navenek na portu 5434, interně 5432. DB jméno/user/heslo: blog/blog/blog.
  • app — multi-stage build (Node → Rust → debian-slim runtime). Spouští se jen s profilem full:
# Jen databáze
docker compose up -d db

# Vše včetně aplikace
docker compose --profile full up -d --build

Docker image (samostatně)

docker build -t site .
docker run -e DATABASE_URL=postgres://… -p 3000:3000 site

Dockerfile provádí dvoufázový build: nejdřív Node stage (npm ci && npm run build v client/), pak Rust stage (cargo build --release), nakonec runtime image s binárkami site_server, site_migration, site_cli.

CI/CD

Repozitář obsahuje .github/workflows/ — GitHub Actions pipeline pro automatický build a nasazení.