images/airflow/2.9.2/docker-compose-hybrid.yaml (107 lines of code) (raw):
version: "3.8"
x-airflow-common: &airflow-common
image: amazon-mwaa-docker-images/airflow:2.9.2-dev
restart: always
init: true
environment:
# AWS credentials
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
AWS_SESSION_TOKEN: ${AWS_SESSION_TOKEN}
AWS_REGION: "us-west-2"
AWS_DEFAULT_REGION: "us-west-2"
# > MWAA Configurations
# >> Core Configuration
# Use this environment variable if you have custom requirements you want to install when the
# container is up.
MWAA__CORE__REQUIREMENTS_PATH: ${MWAA__CORE__REQUIREMENTS_PATH}
MWAA__CORE__AUTH_TYPE: "testing"
# Additional Airflow configuration can be passed here in JSON form.
MWAA__CORE__CREATED_AT: "Tue Sep 18 23:05:58 UTC 2024"
MWAA__CORE__CUSTOM_AIRFLOW_CONFIGS: "{}"
MWAA__CORE__FERNET_KEY: '{"FernetKey": "fake-key-nNge+lks3RBeGVrnZ1Dq5GjKerbZKmb7dXNnsNsGy3E="}'
MWAA__WEBSERVER__SECRET: '{"secret_key": "fake-key-aYDdF6d+Fjznai5yBW63CUAi0IipJqDHlNSWIun6y8o="}'
# Use this enviornment variable to enable encryption with KMS.
MWAA__CORE__KMS_KEY_ARN: ${MWAA__CORE__KMS_KEY_ARN}
# >> Database configuration
MWAA__DB__CREDENTIALS: '{"username": "airflow", "password": "airflow"}'
MWAA__DB__POSTGRES_DB: "airflow"
MWAA__DB__POSTGRES_HOST: "postgres"
MWAA__DB__POSTGRES_PORT: "5432"
MWAA__DB__POSTGRES_SSLMODE: "prefer"
# >> SQS configuration
MWAA__SQS__CREATE_QUEUE: True
MWAA__SQS__CUSTOM_ENDPOINT: http://sqs:9324
MWAA__SQS__QUEUE_URL: http://sqs:9324/000000000000/celery-queue
MWAA__SQS__USE_SSL: False
# >> Logging configuration.
# Use these environment variables if you want to publish logs to CloudWatch.
MWAA__LOGGING__AIRFLOW_DAGPROCESSOR_LOGS_ENABLED: ${MWAA__LOGGING__AIRFLOW_DAGPROCESSOR_LOGS_ENABLED}
MWAA__LOGGING__AIRFLOW_DAGPROCESSOR_LOG_GROUP_ARN: ${MWAA__LOGGING__AIRFLOW_DAGPROCESSOR_LOG_GROUP_ARN}
MWAA__LOGGING__AIRFLOW_DAGPROCESSOR_LOG_LEVEL: ${MWAA__LOGGING__AIRFLOW_DAGPROCESSOR_LOG_LEVEL}
MWAA__LOGGING__AIRFLOW_SCHEDULER_LOGS_ENABLED: ${MWAA__LOGGING__AIRFLOW_SCHEDULER_LOGS_ENABLED}
MWAA__LOGGING__AIRFLOW_SCHEDULER_LOG_GROUP_ARN: ${MWAA__LOGGING__AIRFLOW_SCHEDULER_LOG_GROUP_ARN}
MWAA__LOGGING__AIRFLOW_SCHEDULER_LOG_LEVEL: ${MWAA__LOGGING__AIRFLOW_SCHEDULER_LOG_LEVEL}
MWAA__LOGGING__AIRFLOW_TRIGGERER_LOGS_ENABLED: ${MWAA__LOGGING__AIRFLOW_TRIGGERER_LOGS_ENABLED}
MWAA__LOGGING__AIRFLOW_TRIGGERER_LOG_GROUP_ARN: ${MWAA__LOGGING__AIRFLOW_TRIGGERER_LOG_GROUP_ARN}
MWAA__LOGGING__AIRFLOW_TRIGGERER_LOG_LEVEL: ${MWAA__LOGGING__AIRFLOW_TRIGGERER_LOG_LEVEL}
MWAA__LOGGING__AIRFLOW_TASK_LOGS_ENABLED: ${MWAA__LOGGING__AIRFLOW_TASK_LOGS_ENABLED}
MWAA__LOGGING__AIRFLOW_TASK_LOG_GROUP_ARN: ${MWAA__LOGGING__AIRFLOW_TASK_LOG_GROUP_ARN}
MWAA__LOGGING__AIRFLOW_TASK_LOG_LEVEL: ${MWAA__LOGGING__AIRFLOW_TASK_LOG_LEVEL}
MWAA__LOGGING__AIRFLOW_WEBSERVER_LOGS_ENABLED: ${MWAA__LOGGING__AIRFLOW_WEBSERVER_LOGS_ENABLED}
MWAA__LOGGING__AIRFLOW_WEBSERVER_LOG_GROUP_ARN: ${MWAA__LOGGING__AIRFLOW_WEBSERVER_LOG_GROUP_ARN}
MWAA__LOGGING__AIRFLOW_WEBSERVER_LOG_LEVEL: ${MWAA__LOGGING__AIRFLOW_WEBSERVER_LOG_LEVEL}
MWAA__LOGGING__AIRFLOW_WORKER_LOGS_ENABLED: ${MWAA__LOGGING__AIRFLOW_WORKER_LOGS_ENABLED}
MWAA__LOGGING__AIRFLOW_WORKER_LOG_GROUP_ARN: ${MWAA__LOGGING__AIRFLOW_WORKER_LOG_GROUP_ARN}
MWAA__LOGGING__AIRFLOW_WORKER_LOG_LEVEL: ${MWAA__LOGGING__AIRFLOW_WORKER_LOG_LEVEL}
volumes:
- ./dags:/usr/local/airflow/dags
- ./plugins:/usr/local/airflow/plugins
- ./requirements:/usr/local/airflow/requirements
- ./startup:/usr/local/airflow/startup
depends_on: &airflow-common-depends-on
postgres:
condition: service_healthy
sqs:
condition: service_healthy
services:
postgres:
image: postgres:13
container_name: mwaa-292-db
environment:
POSTGRES_USER: airflow
POSTGRES_PASSWORD: airflow
POSTGRES_DB: airflow
volumes:
- postgres-db-volume:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready", "-U", "airflow"]
interval: 10s
retries: 5
start_period: 5s
restart: always
ports:
- 5432:5432
expose:
- 5432
sqs:
image: softwaremill/elasticmq:latest
healthcheck:
# https://github.com/softwaremill/elasticmq/issues/776#issuecomment-1582527921
test: ["CMD-SHELL", "wget -q -S -O - 127.0.0.1:9324/?Action=ListQueues"]
interval: 10s
retries: 5
start_period: 5s
ports:
- 9324:9324
- 9325:9325
expose:
- 9324
- 9325
spy:
<<: *airflow-common
command: spy
container_name: mwaa-292-spy
webserver:
<<: *airflow-common
command: webserver
container_name: mwaa-292-webserver
ports:
- 8080:8080
expose:
- 8080
# Launches a scheduler/worker hybrid container
hybrid:
<<: *airflow-common
command: hybrid
container_name: mwaa-292-hybrid
volumes:
postgres-db-volume:
name: "mwaa-292-db-volume"