services:

    airflow-postgres:
        platform: linux/amd64
        image: postgres:9.6
        environment:
            - POSTGRES_USER=airflow
            - POSTGRES_PASSWORD=airflow
            - POSTGRES_DB=airflow

    airflow-scheduler:
        platform: linux/amd64
        build:
            context: .
            dockerfile: dev.Dockerfile
        depends_on:
            - airflow-postgres
        env_file:
            - .env
        volumes:
            - ./dags:/var/airflow/dags
            - ./logs:/var/airflow/logs
            - ~/.ssh/snowflake:/root/.ssh/snowflake
        environment:
            - "RUN_CONTAINER_AS=scheduler"
            - "INIT_AIRFLOW_DB=True"
            - "MIGRATE_AIRFLOW_DB=True"
            - "AIRFLOW_HOME=/var/airflow"
            - "AIRFLOW_CONFIG=/var/airflow/airflow.cfg"
            - "AIRFLOW__CORE__DONOT_PICKLE=True"
            - "AIRFLOW__CORE__ENABLE_XCOM_PICKLING=False"
            - "AIRFLOW__CORE__EXECUTOR=LocalExecutor"
            - "AIRFLOW__CORE__FERNET_KEY=I9xQStKl6bVwxoPMcZT_rrk1w86ampk75KAphIotFNg="
            - "AIRFLOW__CORE__LOAD_EXAMPLES=False"
            - "AIRFLOW__CORE__RBAC=False"
            - "AIRFLOW__CORE__REMOTE_LOGGING=False"
            - "AIRFLOW__CORE__SECURE_MODE=True"
            - "AIRFLOW__CORE__SQL_ALCHEMY_CONN=postgresql+psycopg2://airflow:airflow@airflow-postgres/airflow"
            - "AIRFLOW__CORE__STORE_SERIALIZED_DAGS=True"
            - "AIRFLOW__CORE__HOSTNAME_CALLABLE=socket:gethostname"
            - "AIRFLOW__WEBSERVER__SECRET_KEY=448c1beb6f911de318e663608150da55f04ba19ec50c6fcc907eb5d903ff"
            - "AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID"
            - "AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY"
            - "AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN"
            - "AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION"
            - "S3_SALES_BUCKET_NAME=$S3_SALES_BUCKET_NAME"
            - "S3_STATIC_DATA_BUCKET_NAME=$S3_STATIC_DATA_BUCKET_NAME"

    airflow-webserver:
        platform: linux/amd64
        build:
            context: .
            dockerfile: dev.Dockerfile
        depends_on:
            - airflow-postgres
            - airflow-scheduler
        env_file:
            - .env
        volumes:
            - ./dags:/var/airflow/dags
            - ./logs:/var/airflow/logs
        ports:
            - "6103:8080"
        environment:
            - "RUN_CONTAINER_AS=webserver"
            - "INIT_AIRFLOW_DB=True"
            - "MIGRATE_AIRFLOW_DB=True"
            - "AIRFLOW_HOME=/var/airflow"
            - "AIRFLOW_CONFIG=/var/airflow/airflow.cfg"
            - "AIRFLOW__CORE__DONOT_PICKLE=True"
            - "AIRFLOW__CORE__ENABLE_XCOM_PICKLING=False"
            - "AIRFLOW__CORE__EXECUTOR=LocalExecutor"
            - "AIRFLOW__CORE__FERNET_KEY=I9xQStKl6bVwxoPMcZT_rrk1w86ampk75KAphIotFNg="
            - "AIRFLOW__CORE__LOAD_EXAMPLES=False"
            - "AIRFLOW__CORE__RBAC=False"
            - "AIRFLOW__CORE__REMOTE_LOGGING=False"
            - "AIRFLOW__CORE__SECURE_MODE=True"
            - "AIRFLOW__CORE__SQL_ALCHEMY_CONN=postgresql+psycopg2://airflow:airflow@airflow-postgres/airflow"
            - "AIRFLOW__CORE__STORE_SERIALIZED_DAGS=True"
            - "AIRFLOW__CORE__HOSTNAME_CALLABLE=socket:gethostname"
            - "AIRFLOW__WEBSERVER__SECRET_KEY=448c1beb6f911de318e663608150da55f04ba19ec50c6fcc907eb5d903ff"
            - "AIRFLOW__WEBSERVER__SHOW_TRIGGER_FORM_IF_NO_PARAMS=True"
            - "AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID"
            - "AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY"
            - "AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN"
            - "AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION"
