ubuntu/airflow

Verified Publisher

By Canonical

Updated 16 days ago

Ubuntu rock for Apache Airflow - a workflow management platform for data engineering pipelines.

Image
Integration & delivery
Machine learning & AI
Data science
0

2.4K

ubuntu/airflow repository overview

airflow | Ubuntu

Current airflow Docker Image from Canonical, based on Ubuntu. Receives security updates and rolls to newer airflow or Ubuntu release. This repository is free to use and exempt from per-user rate limits.

About airflow

Apache Airflow is a platform to programmatically author, schedule, and monitor workflows. This rock ("airflow") packages Airflow built from source on Ubuntu with Python and a wide set of providers.

Tags and Architectures

LTS Up to 5 years of free security maintenance on LTS channels.

ESM Up to 10 years of customer security maintenance from Canonical's restricted repositories.

Channel TagsSupported untilCurrentlyArchitectures
3.1-24.04_edge10/2026airflow 3.1 on Ubuntu 24.04 LTSarm64, amd64
track_risk

Channel Tags shows the most stable channel for that track ordered stable, candidate, beta, edge. More risky channels are always implicitly available. So if beta is listed, you can also pull edge. If candidate is listed, you can pull beta and edge. When stable is listed, all four are available. Images are guaranteed to progress through the sequence edge, beta, candidate before stable.

Commercial use and Extended Security Maintenance channels

If your usage includes commercial redistribution, or requires ESM or unavailable channels/versions, please get in touch with the Canonical team (or using [email protected]).

Usage

Launch this image locally:

docker run -d --name airflow-container -e TZ=UTC -p 8080:8080 -e AIRFLOW_HOME=/opt/airflow -v /path/to/dags:/opt/airflow/dags -v /path/to/airflow.cfg:/opt/airflow/airflow.cfg ubuntu/airflow:3.1-24.04_edge
Entrypoint and Pebble

The rock uses Pebble, a lightweight service manager. Pebble is PID 1 in the container, and it supervises the Airflow service defined in the rock.

Airflow service

The airflow service is configured with:

command: /usr/bin/airflow standalone
startup: enabled

airflow standalone initializes a local metadata DB, creates a default admin user, and starts the webserver, scheduler, and other core components in one process group (intended for development).

Configuration & State
  • Runtime state (AIRFLOW_HOME) lives at /opt/airflow. This includes airflow.cfg, airflow.db (Database by default for standalone), logs, and dags/.
  • It is required to mount volumes to persist that data or to inject custom dags. For example: -v ./dags:/opt/airflow/dags -v ./airflow.cfg:/opt/airflow/airflow.cfg
Providers

The rock is built from Airflow with many providers pre-installed (Amazon, GCP, Kubernetes, MySQL, Postgres, etc.), so common integrations work out of the box without requiring pip install inside the container.

Full Configuration Reference:

Airflow offers a large number of configuration options that can be set via environment variables or airflow.cfg. For the complete list of configurable settings, consult the official configuration reference

Parameters
ParameterDescription
-e AIRFLOW_HOME=/opt/airflowRoot directory for Airflow state inside the container (DB, logs, dags, config). The rock sets this to /opt/airflow.
-e AIRFLOW__CORE__LOAD_EXAMPLES=falseWhether to load the DAG examples that ship with Airflow. It’s good to get started, but you probably want to set this to False in a production environment
-e AIRFLOW__CORE__EXECUTOR=LocalExecutorThe executor class that airflow should use. Choices include LocalExecutor, CeleryExecutor, KubernetesExecutor or the full import path to the class when using a custom executor.
-e AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=postgresql+psycopg2://airflow:airflow@db:5432/airflowSQLAlchemy connection string for the Airflow metadata DB. airflow standalone defaults to local SQLite, but for production you generally want Postgres or MySQL. Override this to point at an external DB.
e AIRFLOW__CORE__AUTH_MANAGER=airflow.api_fastapi.auth.managers.simple.simple_auth_manager.SimpleAuthManagerFor more information on available authentication managers and the configuration options they require, refer to the official Airflow Auth Manager documentation
-p 8080:8080Airflow Webserver UI (HTTP). This is what you open in the browser. These are documented in the upstream Helm chart.
-p 8794:8794Triggerer log server port. Used for log streaming and collection by the Airflow triggerer. Officially defined in the Airflow Helm Chart as ports.triggererLogs. These are documented in the upstream Helm chart.
-p 8793:8793Worker log server port. Used for log streaming and collection by Airflow workers in distributed setups. Officially defined in the Airflow Helm Chart as ports.workerLogs. These are documented in the upstream Helm chart.
-v /path/to/dags:/opt/airflow/dagsMount your DAGs from the host so you can iterate without rebuilding the rock. Anything in /opt/airflow/dags will be auto-discovered.
-v /path/to/logs:/opt/airflow/logsPersist task logs outside the container (useful for debugging and restarts).
-v /path/to/airflow.cfg:/opt/airflow/airflow.cfgInject a custom airflow.cfg instead of the auto-generated one from airflow standalone.
-v /path/to/requirements.txt:/requirements.txt(Optional) If you extend this rock and want extra Python deps at runtime, you can mount and install them in an init hook / derived image.
-e AIRFLOW__API__SECRET_KEY=change-meSecret key used to run your api server. It should be as random as possible. However, when running more than 1 instances of the api, make sure all of them use the same secret_key otherwise one of them will error with “CSRF session token is missing”.
-e AIRFLOW__API__BASE_URL=https://airflow.example.comThe base url of the API server.
-e AIRFLOW__CORE__MAX_ACTIVE_TASKS_PER_DAG=16The maximum number of task instances allowed to run concurrently in each dag run.
Testing/Debugging

To debug the container:

docker logs -f airflow-container

To get an interactive shell:

docker exec -it airflow-container /bin/bash

Bugs and feature requests

If you find a bug in our image or want to request a specific feature, please file a bug here:

https://bugs.launchpad.net/ubuntu-docker-images/+filebug

Please title the bug "airflow: <issue summary>". Make sure to include the digest of the image you are using, from:

docker images --no-trunc --quiet ubuntu/airflow:<tag>

Deprecated channels & tags

These channels (tags) are not updated anymore. Please upgrade to newer channels, or reach out if you can't upgrade.

TrackVersionEOLUpgrade Path
3-24.04airflow 3 on Ubuntu 24.04 LTS04/2026 -
track

Tag summary

Content type

Image

Digest

sha256:bfb468cd1

Size

702.9 MB

Last updated

16 days ago

docker pull ubuntu/airflow:3.1-24.04_edge

This week's pulls

Pulls:

28

Last week