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