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: