From 432b398d3935923e25542ea483f59bfde7f9e1d6 Mon Sep 17 00:00:00 2001 From: Bitnami Bot Date: Tue, 24 Feb 2026 13:37:04 +0100 Subject: [PATCH] [bitnami/airflow] Release 3.1.7-debian-12-r4 (#91064) Signed-off-by: Bitnami Bot --- bitnami/airflow/3/debian-12/Dockerfile | 8 +- bitnami/airflow/README.md | 317 ------------------------- 2 files changed, 4 insertions(+), 321 deletions(-) diff --git a/bitnami/airflow/3/debian-12/Dockerfile b/bitnami/airflow/3/debian-12/Dockerfile index ec2215b9ecb6..82f564ce2dbd 100644 --- a/bitnami/airflow/3/debian-12/Dockerfile +++ b/bitnami/airflow/3/debian-12/Dockerfile @@ -7,7 +7,7 @@ ARG DOWNLOADS_URL="downloads.bitnami.com/files/stacksmith" ARG TARGETARCH LABEL org.opencontainers.image.base.name="docker.io/bitnami/minideb:bookworm" \ - org.opencontainers.image.created="2026-02-19T00:35:50Z" \ + org.opencontainers.image.created="2026-02-24T11:51:32Z" \ org.opencontainers.image.description="Application packaged by Broadcom, Inc." \ org.opencontainers.image.documentation="https://github.com/bitnami/containers/tree/main/bitnami/airflow/README.md" \ org.opencontainers.image.source="https://github.com/bitnami/containers/tree/main/bitnami/airflow" \ @@ -31,8 +31,8 @@ RUN --mount=type=secret,id=downloads_url,env=SECRET_DOWNLOADS_URL \ "nss-wrapper-1.1.16-0-linux-${OS_ARCH}-debian-12" \ "ini-file-1.4.9-7-linux-${OS_ARCH}-debian-12" \ "wait-for-port-1.0.10-7-linux-${OS_ARCH}-debian-12" \ - "airflow-3.1.7-0-linux-${OS_ARCH}-debian-12" \ - "python-3.12.12-16-linux-${OS_ARCH}-debian-12" \ + "airflow-3.1.7-1-linux-${OS_ARCH}-debian-12" \ + "python-3.12.12-19-linux-${OS_ARCH}-debian-12" \ ) ; \ for COMPONENT in "${COMPONENTS[@]}"; do \ if [ ! -f "${COMPONENT}.tar.gz" ]; then \ @@ -59,7 +59,7 @@ RUN /opt/bitnami/scripts/airflow/postunpack.sh ENV AIRFLOW_HOME="/opt/bitnami/airflow" \ APP_VERSION="3.1.7" \ BITNAMI_APP_NAME="airflow" \ - IMAGE_REVISION="3" \ + IMAGE_REVISION="4" \ LANG="en_US.UTF-8" \ LANGUAGE="en_US:en" \ LD_LIBRARY_PATH="/opt/bitnami/python/lib:/opt/bitnami/airflow/venv/lib/python3.12/site-packages/numpy.libs:$LD_LIBRARY_PATH" \ diff --git a/bitnami/airflow/README.md b/bitnami/airflow/README.md index 88d6b7591057..0224049d0d33 100644 --- a/bitnami/airflow/README.md +++ b/bitnami/airflow/README.md @@ -37,110 +37,14 @@ If you are looking for our previous generation of images based on Debian Linux, Learn more about the Bitnami tagging policy and the difference between rolling tags and immutable tags [in our documentation page](https://techdocs.broadcom.com/us/en/vmware-tanzu/application-catalog/tanzu-application-catalog/services/tac-doc/apps-tutorials-understand-rolling-tags-containers-index.html). -## Prerequisites - -To run this application you need [Docker Engine](https://www.docker.com/products/docker-engine) >= `1.10.0`. [Docker Compose](https://docs.docker.com/compose/) is recommended with a version `1.6.0` or later. - ## How to use this image Airflow requires access to a PostgreSQL database to store information. We will use the [Bitnami PostgreSQL image](https://github.com/bitnami/containers/tree/main/bitnami/postgresql) for the database requirements. Additionally, if you pretend to use the `CeleryExecutor`, you will also need a [Bitnami Redis(R) server](https://github.com/bitnami/containers/tree/main/bitnami/redis). -### Using the Docker Command Line - -1. Create a network - - ```console - docker network create airflow-tier - ``` - -2. Create a volume for PostgreSQL persistence and create a PostgreSQL container - - ```console - docker volume create --name postgresql_data - docker run -d --name postgresql \ - -e POSTGRESQL_USERNAME=bn_airflow \ - -e POSTGRESQL_PASSWORD=bitnami1 \ - -e POSTGRESQL_DATABASE=bitnami_airflow \ - --net airflow-tier \ - --volume postgresql_data:/bitnami/postgresql \ - bitnami/postgresql:latest - ``` - -3. Create a volume for Redis(R) persistence and create a Redis(R) container - - ```console - docker volume create --name redis_data - docker run -d --name redis \ - -e ALLOW_EMPTY_PASSWORD=yes \ - --net airflow-tier \ - --volume redis_data:/bitnami \ - bitnami/redis:latest - ``` - -4. Launch the Apache Airflow web container - - ```console - docker run -d --name airflow -p 8080:8080 \ - -e AIRFLOW_FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho= \ - -e AIRFLOW_SECRET_KEY=a25mQ1FHTUh3MnFRSk5KMEIyVVU2YmN0VGRyYTVXY08= \ - -e AIRFLOW_EXECUTOR=CeleryExecutor \ - -e AIRFLOW_DATABASE_NAME=bitnami_airflow \ - -e AIRFLOW_DATABASE_USERNAME=bn_airflow \ - -e AIRFLOW_DATABASE_PASSWORD=bitnami1 \ - -e AIRFLOW_LOAD_EXAMPLES=yes \ - -e AIRFLOW_PASSWORD=bitnami123 \ - -e AIRFLOW_USERNAME=user \ - -e AIRFLOW_EMAIL=user@example.com \ - --net airflow-tier \ - bitnami/airflow:latest - ``` - -5. Launch the Apache Airflow scheduler container - - ```console - docker run -d --name airflow-scheduler \ - -e AIRFLOW_COMPONENT_TYPE=scheduler \ - -e AIRFLOW_FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho= \ - -e AIRFLOW_SECRET_KEY=a25mQ1FHTUh3MnFRSk5KMEIyVVU2YmN0VGRyYTVXY08= \ - -e AIRFLOW_EXECUTOR=CeleryExecutor \ - -e AIRFLOW_DATABASE_NAME=bitnami_airflow \ - -e AIRFLOW_DATABASE_USERNAME=bn_airflow \ - -e AIRFLOW_DATABASE_PASSWORD=bitnami1 \ - -e AIRFLOW_LOAD_EXAMPLES=yes \ - -e AIRFLOW_WEBSERVER_HOST=airflow \ - --net airflow-tier \ - bitnami/airflow:latest - ``` - -6. Launch the Apache Airflow worker container - - ```console - docker run -d --name airflow-worker \ - -e AIRFLOW_COMPONENT_TYPE=worker \ - -e AIRFLOW_FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho= \ - -e AIRFLOW_SECRET_KEY=a25mQ1FHTUh3MnFRSk5KMEIyVVU2YmN0VGRyYTVXY08= \ - -e AIRFLOW_EXECUTOR=CeleryExecutor \ - -e AIRFLOW_DATABASE_NAME=bitnami_airflow \ - -e AIRFLOW_DATABASE_USERNAME=bn_airflow \ - -e AIRFLOW_DATABASE_PASSWORD=bitnami1 \ - -e AIRFLOW_WEBSERVER_HOST=airflow \ - --net airflow-tier \ - bitnami/airflow:latest - ``` - - Access your application at `http://your-ip:8080` - ### Using `docker-compose.yaml` -```console -curl -LO https://raw.githubusercontent.com/bitnami/containers/main/bitnami/airflow/docker-compose.yml -docker-compose up -``` - Please be aware this file has not undergone internal testing. Consequently, we advise its use exclusively for development or testing purposes. For production-ready deployments, we highly recommend utilizing its associated [Bitnami Helm chart](https://github.com/bitnami/charts/tree/main/bitnami/airflow). -If you detect any issue in the `docker-compose.yaml` file, feel free to report it or contribute with a fix by following our [Contributing Guidelines](https://github.com/bitnami/containers/blob/main/CONTRIBUTING.md). - ### Persisting your application The Bitnami Airflow container relies on the PostgreSQL database & Redis to persist the data. This means that Airflow does not persist anything. To avoid loss of data, you should mount volumes for persistence of [PostgreSQL data](https://github.com/bitnami/containers/blob/main/bitnami/mariadb#persisting-your-database) and [Redis(R) data](https://github.com/bitnami/containers/blob/main/bitnami/redis#persisting-your-database) @@ -149,146 +53,6 @@ The above examples define docker volumes namely `postgresql_data`, and `redis_da To avoid inadvertent removal of these volumes you can [mount host directories as data volumes](https://docs.docker.com/engine/tutorials/dockervolumes/). Alternatively you can make use of volume plugins to host the volume data. -#### Mount host directories as data volumes with Docker Compose - -The following `docker-compose.yml` template demonstrates the use of host directories as data volumes. - -```yaml -version: '2' -services: - postgresql: - image: bitnami/postgresql:latest - environment: - - POSTGRESQL_DATABASE=bitnami_airflow - - POSTGRESQL_USERNAME=bn_airflow - - POSTGRESQL_PASSWORD=bitnami1 - volumes: - - /path/to/postgresql-persistence:/bitnami/postgresql - redis: - image: bitnami/redis:latest - environment: - - ALLOW_EMPTY_PASSWORD=yes - volumes: - - /path/to/redis-persistence:/bitnami - airflow-worker: - image: bitnami/airflow:latest - environment: - - AIRFLOW_COMPONENT_TYPE=worker - - AIRFLOW_FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho= - - AIRFLOW_SECRET_KEY=a25mQ1FHTUh3MnFRSk5KMEIyVVU2YmN0VGRyYTVXY08= - - AIRFLOW_EXECUTOR=CeleryExecutor - - AIRFLOW_DATABASE_NAME=bitnami_airflow - - AIRFLOW_DATABASE_USERNAME=bn_airflow - - AIRFLOW_DATABASE_PASSWORD=bitnami1 - - AIRFLOW_LOAD_EXAMPLES=yes - airflow-scheduler: - image: bitnami/airflow:latest - environment: - - AIRFLOW_COMPONENT_TYPE=scheduler - - AIRFLOW_FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho= - - AIRFLOW_SECRET_KEY=a25mQ1FHTUh3MnFRSk5KMEIyVVU2YmN0VGRyYTVXY08= - - AIRFLOW_EXECUTOR=CeleryExecutor - - AIRFLOW_DATABASE_NAME=bitnami_airflow - - AIRFLOW_DATABASE_USERNAME=bn_airflow - - AIRFLOW_DATABASE_PASSWORD=bitnami1 - - AIRFLOW_LOAD_EXAMPLES=yes - airflow: - image: bitnami/airflow:latest - environment: - - AIRFLOW_FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho= - - AIRFLOW_SECRET_KEY=a25mQ1FHTUh3MnFRSk5KMEIyVVU2YmN0VGRyYTVXY08= - - AIRFLOW_EXECUTOR=CeleryExecutor - - AIRFLOW_DATABASE_NAME=bitnami_airflow - - AIRFLOW_DATABASE_USERNAME=bn_airflow - - AIRFLOW_DATABASE_PASSWORD=bitnami1 - - AIRFLOW_PASSWORD=bitnami123 - - AIRFLOW_USERNAME=user - - AIRFLOW_EMAIL=user@example.com - ports: - - 8080:8080 -``` - -#### Mount host directories as data volumes using the Docker command line - -1. Create a network (if it does not exist) - - ```console - docker network create airflow-tier - ``` - -2. Create the PostgreSQL container with host volumes - - ```console - docker run -d --name postgresql \ - -e POSTGRESQL_USERNAME=bn_airflow \ - -e POSTGRESQL_PASSWORD=bitnami1 \ - -e POSTGRESQL_DATABASE=bitnami_airflow \ - --net airflow-tier \ - --volume /path/to/postgresql-persistence:/bitnami \ - bitnami/postgresql:latest - ``` - -3. Create the Redis(R) container with host volumes - - ```console - docker run -d --name redis \ - -e ALLOW_EMPTY_PASSWORD=yes \ - --net airflow-tier \ - --volume /path/to/redis-persistence:/bitnami \ - bitnami/redis:latest - ``` - -4. Create the Airflow container - - ```console - docker run -d --name airflow -p 8080:8080 \ - -e AIRFLOW_FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho= \ - -e AIRFLOW_SECRET_KEY=a25mQ1FHTUh3MnFRSk5KMEIyVVU2YmN0VGRyYTVXY08= \ - -e AIRFLOW_EXECUTOR=CeleryExecutor \ - -e AIRFLOW_DATABASE_NAME=bitnami_airflow \ - -e AIRFLOW_DATABASE_USERNAME=bn_airflow \ - -e AIRFLOW_DATABASE_PASSWORD=bitnami1 \ - -e AIRFLOW_LOAD_EXAMPLES=yes \ - -e AIRFLOW_PASSWORD=bitnami123 \ - -e AIRFLOW_USERNAME=user \ - -e AIRFLOW_EMAIL=user@example.com \ - --net airflow-tier \ - bitnami/airflow:latest - ``` - -5. Create the Airflow Scheduler container - - ```console - docker run -d --name airflow-scheduler \ - -e AIRFLOW_COMPONENT_TYPE=scheduler \ - -e AIRFLOW_FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho= \ - -e AIRFLOW_SECRET_KEY=a25mQ1FHTUh3MnFRSk5KMEIyVVU2YmN0VGRyYTVXY08= \ - -e AIRFLOW_EXECUTOR=CeleryExecutor \ - -e AIRFLOW_DATABASE_NAME=bitnami_airflow \ - -e AIRFLOW_DATABASE_USERNAME=bn_airflow \ - -e AIRFLOW_DATABASE_PASSWORD=bitnami1 \ - -e AIRFLOW_LOAD_EXAMPLES=yes \ - -e AIRFLOW_WEBSERVER_HOST=airflow \ - --net airflow-tier \ - bitnami/airflow:latest - ``` - -6. Create the Airflow Worker container - - ```console - docker run -d --name airflow-worker \ - -e AIRFLOW_COMPONENT_TYPE=worker \ - -e AIRFLOW_FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho= \ - -e AIRFLOW_SECRET_KEY=a25mQ1FHTUh3MnFRSk5KMEIyVVU2YmN0VGRyYTVXY08= \ - -e AIRFLOW_EXECUTOR=CeleryExecutor \ - -e AIRFLOW_DATABASE_NAME=bitnami_airflow \ - -e AIRFLOW_DATABASE_USERNAME=bn_airflow \ - -e AIRFLOW_DATABASE_PASSWORD=bitnami1 \ - -e AIRFLOW_WEBSERVER_HOST=airflow \ - --net airflow-tier \ - bitnami/airflow:latest - ``` - ## Configuration ### Load DAG files @@ -376,42 +140,6 @@ This container supports the installation of additional python modules at start-u > In addition to the previous environment variables, all the parameters from the configuration file can be overwritten by using environment variables with this format: `AIRFLOW__{SECTION}__{KEY}`. Note the double underscores. -#### Specifying Environment variables using Docker Compose - -```yaml -version: '2' - -services: - airflow: - image: bitnami/airflow:latest - environment: - - AIRFLOW_FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho= - - AIRFLOW_SECRET_KEY=a25mQ1FHTUh3MnFRSk5KMEIyVVU2YmN0VGRyYTVXY08= - - AIRFLOW_EXECUTOR=CeleryExecutor - - AIRFLOW_DATABASE_NAME=bitnami_airflow - - AIRFLOW_DATABASE_USERNAME=bn_airflow - - AIRFLOW_DATABASE_PASSWORD=bitnami1 - - AIRFLOW_PASSWORD=bitnami123 - - AIRFLOW_USERNAME=user - - AIRFLOW_EMAIL=user@example.com -``` - -#### Specifying Environment variables on the Docker command line - -```console -docker run -d --name airflow -p 8080:8080 \ - -e AIRFLOW_FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho= \ - -e AIRFLOW_SECRET_KEY=a25mQ1FHTUh3MnFRSk5KMEIyVVU2YmN0VGRyYTVXY08= \ - -e AIRFLOW_EXECUTOR=CeleryExecutor \ - -e AIRFLOW_DATABASE_NAME=bitnami_airflow \ - -e AIRFLOW_DATABASE_USERNAME=bn_airflow \ - -e AIRFLOW_DATABASE_PASSWORD=bitnami1 \ - -e AIRFLOW_PASSWORD=bitnami123 \ - -e AIRFLOW_USERNAME=user \ - -e AIRFLOW_EMAIL=user@example.com \ - bitnami/airflow:latest -``` - #### SMTP Configuration To configure Airflow to send email using SMTP you can set the following environment variables: @@ -424,51 +152,6 @@ To configure Airflow to send email using SMTP you can set the following environm - `AIRFLOW__SMTP__SMTP_PASSWORD`: Password for SMTP. No defaults. - `AIRFLOW__SMTP__SMTP_MAIL_FROM`: To modify the "from email address". Default: **** -This would be an example of SMTP configuration using a GMail account: - -- docker-compose (application part): - -```yaml - airflow: - image: bitnami/airflow:latest - environment: - - AIRFLOW_FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho= - - AIRFLOW_SECRET_KEY=a25mQ1FHTUh3MnFRSk5KMEIyVVU2YmN0VGRyYTVXY08= - - AIRFLOW_EXECUTOR=CeleryExecutor - - AIRFLOW_DATABASE_NAME=bitnami_airflow - - AIRFLOW_DATABASE_USERNAME=bn_airflow - - AIRFLOW_DATABASE_PASSWORD=bitnami1 - - AIRFLOW_PASSWORD=bitnami - - AIRFLOW_USERNAME=user - - AIRFLOW_EMAIL=user@email.com - - AIRFLOW__SMTP__SMTP_HOST=smtp@gmail.com - - AIRFLOW__SMTP__SMTP_USER=your_email@gmail.com - - AIRFLOW__SMTP__SMTP_PASSWORD=your_password - - AIRFLOW__SMTP__SMTP_PORT=587 - ports: - - 8080:8080 -``` - -- For manual execution: - -```console -docker run -d --name airflow -p 8080:8080 \ - -e AIRFLOW_FERNET_KEY=46BKJoQYlPPOexq0OhDZnIlNepKFf87WFwLbfzqDDho= \ - -e AIRFLOW_SECRET_KEY=a25mQ1FHTUh3MnFRSk5KMEIyVVU2YmN0VGRyYTVXY08= \ - -e AIRFLOW_EXECUTOR=CeleryExecutor \ - -e AIRFLOW_DATABASE_NAME=bitnami_airflow \ - -e AIRFLOW_DATABASE_USERNAME=bn_airflow \ - -e AIRFLOW_DATABASE_PASSWORD=bitnami1 \ - -e AIRFLOW_PASSWORD=bitnami123 \ - -e AIRFLOW_USERNAME=user \ - -e AIRFLOW_EMAIL=user@example.com \ - -e AIRFLOW__SMTP__SMTP_HOST=smtp@gmail.com \ - -e AIRFLOW__SMTP__SMTP_USER=your_email@gmail.com \ - -e AIRFLOW__SMTP__SMTP_PASSWORD=your_password \ - -e AIRFLOW__SMTP__SMTP_PORT=587 \ - bitnami/airflow:latest -``` - ### FIPS configuration in Bitnami Secure Images The Bitnami Apache Airflow Docker image from the [Bitnami Secure Images](https://go-vmware.broadcom.com/contact-us) catalog includes extra features and settings to configure the container with FIPS capabilities. You can configure the next environment variables: