From 806e1dc3e4c8b34b788bef69f56e76c1afb4c1aa Mon Sep 17 00:00:00 2001 From: Dmitry Dementev Date: Wed, 17 Sep 2025 20:46:44 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20airflow-?= =?UTF-8?q?init?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- airflow-greenplum/Makefile | 2 +- airflow-greenplum/docker-compose.yml | 26 ++++++++++++++++++-------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/airflow-greenplum/Makefile b/airflow-greenplum/Makefile index 6624e72..c5ab33f 100644 --- a/airflow-greenplum/Makefile +++ b/airflow-greenplum/Makefile @@ -7,7 +7,7 @@ down: docker compose -f docker-compose.yml down -v airflow-init: - docker compose -f docker-compose.yml run --rm airflow-init + docker compose -f docker-compose.yml run --rm --profile init airflow-init logs: docker compose -f docker-compose.yml logs -f airflow-webserver airflow-scheduler diff --git a/airflow-greenplum/docker-compose.yml b/airflow-greenplum/docker-compose.yml index 57bfd2c..f76c61f 100644 --- a/airflow-greenplum/docker-compose.yml +++ b/airflow-greenplum/docker-compose.yml @@ -117,20 +117,30 @@ services: airflow-init: image: apache/airflow:2.9.2 - container_name: gp_airflow_init + # container_name: gp_airflow_init + profiles: ["init"] env_file: .env environment: + AIRFLOW__CORE__LOAD_EXAMPLES: "False" AIRFLOW__DATABASE__SQL_ALCHEMY_CONN: postgresql+psycopg2://${PG_USER}:${PG_PASSWORD}@pgmeta:5432/${PG_DB} volumes: - ./airflow/dags:/opt/airflow/dags - ./airflow/requirements.txt:/opt/airflow/requirements.txt - entrypoint: ["/bin/bash", "-lc"] - command: | - set -e - until pg_isready -h pgmeta -U ${PG_USER} -d ${PG_DB}; do echo 'waiting for pgmeta'; sleep 2; done - pip install --no-cache-dir -r /opt/airflow/requirements.txt - airflow db migrate - airflow users create --username ${AIRFLOW_USER} --password ${AIRFLOW_PASSWORD} --firstname Admin --lastname User --role Admin --email admin@example.org + command: > + bash -lc " + set -e; + pip install --no-cache-dir -r /opt/airflow/requirements.txt; + # Дожидаемся готовности БД ретрая миграции + for i in {1..30}; do + airflow db migrate && break || echo 'waiting for pgmeta' && sleep 3; + done; + # Создаём админа; при повторном запуске не падаем + airflow users create + --username ${AIRFLOW_USER} + --password ${AIRFLOW_PASSWORD} + --firstname Admin --lastname User + --role Admin --email admin@example.org || true + " depends_on: pgmeta: condition: service_healthy