--- version: "3.8" x-airflow-common: &airflow-common build: ./airflow_img volumes: - ./state/airflow-data:/home/airflow/airflow - ./state/dbt-data/logs:/dbt/logs - ./state/dbt-data/target:/dbt/target - ./dags:/home/airflow/airflow/dags - ./data:/home/airflow/gcs/data:ro - ./etl:/etl:ro - ./dbt:/dbt 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: scheduler restart: "unless-stopped" depends_on: airflow-init: condition: service_completed_successfully airflow-webserver: <<: *airflow-common command: webserver restart: "unless-stopped" ports: - 8080:8080 depends_on: airflow-init: condition: service_completed_successfully postgres: image: postgres:15.3-alpine restart: "unless-stopped" 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" notebook: image: jupyter/scipy-notebook restart: "unless-stopped" ports: - 8888:8888 volumes: - ./notebooks:/home/jovyan/work - ./data:/home/jovyan/data:ro