mirror of
https://github.com/bitnami/containers.git
synced 2026-10-18 05:59:59 +02:00
[bitnami/airflow] Release 3.1.7-debian-12-r4 (#91064)
Signed-off-by: Bitnami Bot <bitnami.bot@broadcom.com>
This commit is contained in:
@@ -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" \
|
||||
|
||||
@@ -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: **<airflow@example.com>**
|
||||
|
||||
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:
|
||||
|
||||
Reference in New Issue
Block a user