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á | Popis | Default |
|---|---|---|
DATABASE_URL | PostgreSQL connection string | (povinné — docker-compose nastavuje postgres://blog:blog@db:5432/blog) |
RUST_LOG | Log level filtr | site=debug,tower_http=debug,info |
PORT | HTTP listen port | 3000 |
NAMESPACE | Vybírá assets/<NAMESPACE>/{templates,css,js,img} bundle | common |
SERPER_API_KEY | Volitelné — 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 profilemfull:
# 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í.