Pro Warehouse postavený v cloudu nad MS Fabricem máme připraveno prostředí Lakehousu a DWH a máme taky kromě jiného připraven a nakonfigurován dbt projekt. Nyní nastává důležitá fáze DataOps: Musíme se zamyslet nad tím,
- Z jakého prostředí (ideálně serverless) budeme v budoucnu dbt projekt dávkově spouštět.
- Jak implementovat proces Kontinuální Integrace a Kontinuálního Doručování (CI/CD), který zajistí automatické a bezpečné nasazení ověřeného transformačního kódu z repozitáře před každým spuštěním dbt
Azure Container Apps Jobs (ACA Jobs) 1 poskytuje ideální bezserverovou platformu pro spouštění jednorázových nebo plánovaných dávkových úloh, které jsou základem ETL/ELT procesů. Tento technický průvodce detailně rozebírá, jak správně kontejnerizovat a spouštět tyto kritické DWH komponenty.
Úvod do Azure Container Apps
Azure Container Apps (ACA) služba pro běh kontejnerizovaných aplikací bez nutnosti spravovat infrastrukturu (Kubernetes, VM apod.). Podporuje jak dlouho běžící služby (API, weby), tak úlohy s krátkou životností (Jobs). Základem je škálování, integrace s Azure monitorováním, networking a bezpečné připojení k dalším Azure službám (např. Key Vault, Storage, Database, Event Grid).
Azure Container App Jobs
Jelikož budeme provozovat datové řešení postavené nad dbt pouštěné dávkově jednou denně, je pro nás nejzajímavější služba Azure Container Apps Jobs. Je to speciální Container App pro batch, plánované nebo event-driven úlohy, které neběží trvale. Hodí se pro případy jako:
- periodické dávkové zpracování (cron),
- CI/CD kroky,
- datové transformace — např. spouštění dbt pipeline.
Typy jobů:
- Manual – spustíš ručně přes CLI nebo API.
- Scheduled – spouští se automaticky dle crontabu.
- Event-driven – reagují na události z Azure Event Gridu nebo Service Busu.
Každý job se spouští jako krátce běžící kontejner s definovaným commandem (např. dbt run nebo dbt test) nebo bez něj (command je součástí kontejneru).
Cena: v Tieru Basic (do 10GB) do 5 USD/ měsíc pro cca 2h běh/denně
Azure Container Registry (ACR)
- bezpečné uložení image v rámci Azure subscription,
- integrace s Azure Container Apps, AKS, Azure DevOps, GitHub Actions,
- možnost autentizace pomocí Managed Identity (není třeba ukládat hesla),
- automatické buildy nebo import image z veřejných registrů (např. Docker Hub)
Cena: cca 5 USD měsíc
Kontejnerizace dbt projektu a uložení v Azure Container Registry
Nyní víme kde budeme náš kontejner spouštět a nezbývá než jej vytvořit. Vytvoření Docker image provedeme tak, že
1) Do našeho dbt projektu vytvoříme nový soubor s názvem Dockerfile (-> skript po rozkliknutí) – ten obsahuje definici toho co má kontejner obsahovat za prostředí – python, dbt adaptéry, odbc driver 18, a definici run skriptu
2) Do našeho dbt projektu vytvoříme 2. soubor Dockerfilerun (-> skript po rozkliknutí). Tento soubor obsahuje definici toho, co se má spustit v dockeru.
3) Dalším krokem je vytvoření image, v terminálu pustíme příkaz, který nám sestaví docker image. Naše secrety (GIT PAT a client secret pro připojení k fabricu budeme předávat až v azure. Mít jej v Dockeru natvrdo je bezpečnostní riziko.
docker buildx build –platform linux/amd64 \ –secret id=github_pat,src=/Users/janzednicek/pat_git.txt \ –no-cache \ -t dbt:latest .
6) Když se podíváme do naší resource v azure portálu, tak tam pushnutý docker image vidíme a nyní už jen zbývá spustit jej přes Azure Container App jobs
Nastavení a spuštění dbt přes Azure Container App Jobs a test
1) Nejprve si vytvoříme resource Container App Job
2) Kontejner nastavíme tak, jak je na obrázku – container apps pochopí, že máme docker uložen v ACR a nabídnou nám jej rovnou. Do command a arguments nedáváme nic, vše se řídí naším run skriptem uvnitř dockeru.
3) Jelikož máme vytažené secrets do proměnných, tak je ještě potřeba nastavit Environment variables, ty máme 2 – DBT_SECRET pro přihlášení k Fabricu a GITHUB_PAT, který je potřeba pro stažení repozitáře před spuštěním dbt. Proměnná vede na secrets, které je potřeba založit buď v container secrets (Settings- Secrets) nebo přímo v Key Valut. V případě Key Valut je potřeba ještě nastavit práva.
4) No a nyní můžeme otestovat funkčnost.
- V našem Dbt projektu založíme nový soubor hello_world.sql
- Pushneme ho do repozitáře
- Spustíme container app job
- Zkontrolujeme jestli se nám tabulka objeví ve Fabricu
Reference
- Microsoft dokumentace, Azure container apps [on-line]. [cit. 2025-10-25]. Dostupné z WWW: https://azure.microsoft.com/en-us/products/container-apps







