--- version: "3.8" x-airflow-common: &airflow-common image: us-docker.pkg.dev/cloud-airflow-releaser/airflow-worker-scheduler-2-5-1/airflow-worker-scheduler-2-5-1:composer-2.3.1-airflow-2-5-1 entrypoint: /usr/local/bin/airflow-entrypoint.sh volumes: - ./state/airflow-data:/home/airflow/airflow - ./dags:/home/airflow/airflow/dags - ./scripts/airflow-init.sh:/usr/local/bin/airflow-init.sh:ro - ./scripts/airflow-entrypoint.sh:/usr/local/bin/airflow-entrypoint.sh:ro - ../data:/home/airflow/gcs/data:ro - ./beam_etl:/beam_etl:ro - ./sql:/sql:ro environment: AIRFLOW__CORE__LOAD_EXAMPLES: 'false' services: airflow-init: <<: *airflow-common restart: "no" entrypoint: /usr/local/bin/airflow-init.sh airflow-scheduler: <<: *airflow-common command: airflow scheduler depends_on: airflow-init: condition: service_completed_successfully airflow-webserver: <<: *airflow-common command: airflow webserver ports: - 8080:8080 depends_on: airflow-init: condition: service_completed_successfully postgres: image: postgres:15.3-alpine ports: - 5432:5432 volumes: - ./state/postgres/data:/var/lib/postgresql/data environment: - "POSTGRES_PASSWORD=postgres" - "POSTGRES_USER=postgres" terraform: image: hashicorp/terraform entrypoint: /usr/local/bin/terraform-entrypoint.sh restart: "no" working_dir: /terraform volumes: - ./scripts/terraform-entrypoint.sh:/usr/local/bin/terraform-entrypoint.sh:ro - ./terraform:/terraform - ./state/tfstate:/terraform/tfstate depends_on: airflow-webserver: condition: service_started postgres: condition: service_started environment: - "TF_VAR_pg_host=postgres" - "TF_VAR_pg_port=5432" - "TF_VAR_pg_password=postgres" - "TF_VAR_pg_username=postgres"