Fabric | dbt – Docker dbt kontejner a Azure Container Apps (CI/CD)

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,

  1. Z jakého prostředí (ideálně serverless) budeme v budoucnu dbt projekt dávkově spouštět.
  2. 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)

Abychom vůbec mohli nějaký job spouštět, tak budeme potřebovat mít docker image někde bezpečně uložen. ACR je plně spravovaný privátní repozitář pro Docker image. Hlavní výhody:
  • 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 .

dbt-docker-image

4) Docker image si lokálně otestujeme a spustíme příkazem docker run s tím, že mu musíme ještě poskytnout naše securables. Pokud vše dopadne dobře, tak by mělo dojít ke spuštění dbt snapshot a následně dbt run tak, jak to máme v našem Dockerfilerun souboru.
dockerrun–rm\
-eDBT_SECRET=”f7y8Q………”\
-eGITHUB_PAT=”github_pat_…….”\
dbt:latest
5) Pokud máme image v pořádku, tak můžeme pustit sérii příkazů, kterou docker pošleme do našeho Azure container registru (který jsme se před tím v Azure portalu založili)
az login
az acr login –name containerregjanzednicek
docker tag dbt:latest containerregjanzednicek.azurecr.io/dbt:latest
docker push containerregjanzednicek.azurecr.io/dbt:latest
dbt-docker-push-container-reg

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

dbt-docker-image-azure-portal

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.

container-app-jobs-secret

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

container-app-job--monitor

  • Zkontrolujeme jestli se nám tabulka objeví ve Fabricu

 

5/5 - (1 vote)

Reference

  1. Microsoft dokumentace, Azure container apps [on-line]. [cit. 2025-10-25]. Dostupné z WWW: https://azure.microsoft.com/en-us/products/container-apps  
Rubrika: Dbt (data build tool) Fabric

O Ing. Jan Zedníček - Data Engineer & Controlling

Jmenuji se Honza Zedníček a působím jako data engineer freelancer. Během cca 10 let jsem zde shromáždil přes 600 IT case studies, průvodců, návodů a tipů určených zejména odborné veřejnosti, studentům a zájemcům o informace z oblastí Data Engineeringu, korporátních financí a reportingu. Zaměřuji se především na Microsoft technologie (on-prem i cloud) a různé synergické efekty v rámci jejich produktového portfolia pro dataře a finanční profesionály. Věnuji se také dalším platformám a významným hráčům z oblasti open source technologií. 🔥 Pokud vám tento článek pomohl, ocením referenci na vašem webu nebo zmínku v komunitě. A mám pro vás ještě tip: řešíte-li nějaký zapeklitý Excel problém, přihlašte se do naší Excel Facebook skupiny (2.4k+ členů), kde si pomáháme Excel CZ/SK diskuse ».

Leave a Reply

Your email address will not be published. Required fields are marked *