Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Docker compose file for airflow 2 ( version 2.0.0 )

I am looking to write docker compose file to locally execute airflow in production similar environent.

For older airflow v1.10.14, docker compose is working fine. But same docker compose is not working for latest stable version, airflow scheduler & webservice is failing continuously. error message looks like unable to create audit tables.

docker-compose.yaml:

 version: "2.1"
services:
  postgres:
    image: postgres:12
    environment:
      - POSTGRES_USER=airflow
      - POSTGRES_PASSWORD=airflow
      - POSTGRES_DB=airflow
    ports:
      - "5433:5432"

  scheduler:
    image: apache/airflow:1.10.14
    restart: always
    depends_on:
      - postgres
      - webserver
    env_file:
      - .env
    ports:
      - "8793:8793"
    volumes:
      - ./dags:/opt/airflow/dags
      - ./airflow-logs:/opt/airflow/logs
      - ./plugins:/opt/airflow/plugins
    command: scheduler
    healthcheck:
      test: ["CMD-SHELL", "[ -f /usr/local/airflow/airflow-webserver.pid ]"]
      interval: 30s
      timeout: 30s
      retries: 5

  webserver:
    image: apache/airflow:1.10.14
    hostname: webserver
    restart: always
    depends_on:
      - postgres
    env_file:
      - .env
    volumes:
      - ./dags:/opt/airflow/dags
      - ./scripts:/opt/airflow/scripts
      - ./airflow-logs:/opt/airflow/logs
      - ./plugins:/opt/airflow/plugins
    ports:
      - "8080:8080"
    entrypoint: ./scripts/airflow-entrypoint.sh
    healthcheck:
      test: ["CMD-SHELL", "[ -f /usr/local/airflow/airflow-webserver.pid ]"]
      interval: 30s
      timeout: 30s
      retries: 5

.env:

AIRFLOW__CORE__LOAD_DEFAULT_CONNECTIONS=False
AIRFLOW__CORE__SQL_ALCHEMY_CONN=postgres+psycopg2://airflow:airflow@postgres:5432/airflow
AIRFLOW__CORE__FERNET_KEY=81HqDtbqAywKSOumSha3BhWNOdQ26slT6K0YaZeZyPs=
AIRFLOW_CONN_METADATA_DB=postgres+psycopg2://airflow:airflow@postgres:5432/airflow
AIRFLOW_VAR__METADATA_DB_SCHEMA=airflow
AIRFLOW__SCHEDULER__SCHEDULER_HEARTBEAT_SEC=10

./scripts/airflow-entrypoint.sh:

#!/usr/bin/env bash
airflow upgradedb
airflow webserver
like image 250
avikm Avatar asked Jan 25 '21 17:01

avikm


People also ask

Does Airflow run in Docker?

Airflow has a custom operator, just in case you need it, allowing you to easily create, schedule, and monitor these tasks. Now you know the fundamentals of Airflow and you can start running Airflow in Docker.

Is there any official Docker image for airflow?

Official docker image for Airflow version 2.0 is available now. Here is list of 2.0.0 docker images

What is the environment for airflow server?

Airflow server is based on a custom docker image (which will be described in the next section) based on the official 2.0 stable version. We use two environment files: airflow.env (Airflow configuration) and airflow_db.env (database configuration). Here it is a minimal airflow.env that you can extend based on your needs:

How to add a volume to a docker compose file?

in docker-compose.yml: 2.1 add volume at thetop of the file, under 'networks' defining like this: Or use WSL and run docker under it.

How to change the default login for Docker-Compose?

Change your user password and login as you want. By default it is login: admin, password: admin. Note: If you will run docker-compose for 2nd and more times in init_db you will see log: NOTE: if you previous run Airflow 1.10 - remove your DB volume files before run 2.0 or change db init command to db upgrade.


1 Answers

There is an official docker-compose.yml see here.

You will also find more information about docker and Kubernetes deployment in the official docs

like image 194
Ali Avatar answered Oct 26 '22 23:10

Ali