From eda344414740c45e3b058bff2a8ee61f0df50e31 Mon Sep 17 00:00:00 2001 From: Tudor Date: Tue, 24 Mar 2026 12:38:46 +0000 Subject: [PATCH] fix(kestra): load flows via kestra-init one-shot container --flow-path is not a valid Kestra flag; flows must be pushed explicitly. kestra-init waits for Kestra to pass its healthcheck then runs 'kestra flow namespace update schoolcompare.data /flows --no-delete' to import all flow YAMLs. Runs once on stack start; --no-delete means any flows created manually in the UI are not removed. Co-Authored-By: Claude Sonnet 4.6 --- docker-compose.yml | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index b87bcc0..06dfdbb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -82,12 +82,11 @@ services: kestra: image: kestra/kestra:latest container_name: schoolcompare_kestra - command: server standalone --flow-path=/flows + command: server standalone ports: - "8080:8080" volumes: - kestra_storage:/app/storage - - ./integrator/flows:/flows environment: KESTRA_CONFIGURATION: | datasources: @@ -111,6 +110,44 @@ services: networks: - schoolcompare-network restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "curl -sf http://localhost:8080/api/v1/flows/search || exit 1"] + interval: 15s + timeout: 10s + retries: 10 + start_period: 60s + + # One-shot container: imports flow YAMLs into Kestra after it's healthy + kestra-init: + image: kestra/kestra:latest + container_name: schoolcompare_kestra_init + volumes: + - ./integrator/flows:/flows:ro + environment: + KESTRA_CONFIGURATION: | + datasources: + postgres: + url: jdbc:postgresql://db:5432/kestra + driverClassName: org.postgresql.Driver + username: schoolcompare + password: schoolcompare + kestra: + repository: + type: postgres + queue: + type: postgres + storage: + type: local + local: + base-path: /tmp/kestra-init-storage + command: > + flow namespace update schoolcompare.data /flows --no-delete + depends_on: + kestra: + condition: service_healthy + networks: + - schoolcompare-network + restart: no # Data integrator — Python microservice called by Kestra integrator: