k-project/airflow (sha256:97126b9401286f8763c4cf9d8dd9d58ec21292cb235726609d4be9332be8e22b)
Published 2026-01-21 17:53:21 +00:00 by gdn
Installation
docker pull forge.dinoia.eu/gdn/k-project/airflow@sha256:97126b9401286f8763c4cf9d8dd9d58ec21292cb235726609d4be9332be8e22bsha256:97126b9401286f8763c4cf9d8dd9d58ec21292cb235726609d4be9332be8e22bAbout this package
Reference, production-ready Apache Airflow image
Image layers
| # debian.sh --arch 'amd64' out/ 'bookworm' '@1768176000' |
| SHELL [/bin/bash -o pipefail -o errexit -o nounset -o nolog -c] |
| ARG AIRFLOW_UID |
| LABEL org.apache.airflow.distro=debian org.apache.airflow.module=airflow org.apache.airflow.component=airflow org.apache.airflow.image=airflow org.apache.airflow.uid=50000 |
| ARG BASE_IMAGE |
| ENV BASE_IMAGE=debian:bookworm-slim DEBIAN_FRONTEND=noninteractive LANGUAGE=C.UTF-8 LANG=C.UTF-8 LC_ALL=C.UTF-8 LC_CTYPE=C.UTF-8 LC_MESSAGES=C.UTF-8 PIP_CACHE_DIR=/tmp/.cache/pip UV_CACHE_DIR=/tmp/.cache/uv |
| ARG RUNTIME_APT_DEPS= |
| ARG ADDITIONAL_RUNTIME_APT_DEPS= |
| ARG RUNTIME_APT_COMMAND=echo |
| ARG ADDITIONAL_RUNTIME_APT_COMMAND= |
| ARG ADDITIONAL_RUNTIME_APT_ENV= |
| ARG INSTALL_MYSQL_CLIENT=true |
| ARG INSTALL_MYSQL_CLIENT_TYPE=mariadb |
| ARG INSTALL_MSSQL_CLIENT=true |
| ARG INSTALL_POSTGRES_CLIENT=true |
| ARG AIRFLOW_INSTALLATION_METHOD=apache-airflow |
| ENV RUNTIME_APT_DEPS= ADDITIONAL_RUNTIME_APT_DEPS= RUNTIME_APT_COMMAND=echo ADDITIONAL_RUNTIME_APT_COMMAND= INSTALL_MYSQL_CLIENT=true INSTALL_MYSQL_CLIENT_TYPE=mariadb INSTALL_MSSQL_CLIENT=true INSTALL_POSTGRES_CLIENT=true GUNICORN_CMD_ARGS=--worker-tmp-dir /dev/shm AIRFLOW_INSTALLATION_METHOD=apache-airflow |
| COPY /usr/python/ /usr/python/ # buildkit |
| COPY install_os_dependencies.sh /scripts/docker/ # buildkit |
| RUN |12 AIRFLOW_UID=50000 BASE_IMAGE=debian:bookworm-slim RUNTIME_APT_DEPS= ADDITIONAL_RUNTIME_APT_DEPS= RUNTIME_APT_COMMAND=echo ADDITIONAL_RUNTIME_APT_COMMAND= ADDITIONAL_RUNTIME_APT_ENV= INSTALL_MYSQL_CLIENT=true INSTALL_MYSQL_CLIENT_TYPE=mariadb INSTALL_MSSQL_CLIENT=true INSTALL_POSTGRES_CLIENT=true AIRFLOW_INSTALLATION_METHOD=apache-airflow /bin/bash -o pipefail -o errexit -o nounset -o nolog -c bash /scripts/docker/install_os_dependencies.sh runtime # buildkit |
| ARG AIRFLOW_IMAGE_REPOSITORY |
| ARG AIRFLOW_IMAGE_README_URL |
| ARG AIRFLOW_USER_HOME_DIR |
| ARG AIRFLOW_HOME |
| ARG AIRFLOW_IMAGE_TYPE |
| ENV PATH=/home/airflow/.local/bin:/usr/python/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin VIRTUAL_ENV=/home/airflow/.local AIRFLOW_UID=50000 AIRFLOW_USER_HOME_DIR=/home/airflow AIRFLOW_HOME=/opt/airflow AIRFLOW_IMAGE_TYPE=prod |
| COPY common.sh /scripts/docker/ # buildkit |
| COPY install_mysql.sh install_mssql.sh install_postgres.sh /scripts/docker/ # buildkit |
| RUN |17 AIRFLOW_UID=50000 BASE_IMAGE=debian:bookworm-slim RUNTIME_APT_DEPS= ADDITIONAL_RUNTIME_APT_DEPS= RUNTIME_APT_COMMAND=echo ADDITIONAL_RUNTIME_APT_COMMAND= ADDITIONAL_RUNTIME_APT_ENV= INSTALL_MYSQL_CLIENT=true INSTALL_MYSQL_CLIENT_TYPE=mariadb INSTALL_MSSQL_CLIENT=true INSTALL_POSTGRES_CLIENT=true AIRFLOW_INSTALLATION_METHOD=apache-airflow AIRFLOW_IMAGE_REPOSITORY=https://github.com/apache/airflow AIRFLOW_IMAGE_README_URL=https://raw.githubusercontent.com/apache/airflow/main/docs/docker-stack/README.md AIRFLOW_USER_HOME_DIR=/home/airflow AIRFLOW_HOME=/opt/airflow AIRFLOW_IMAGE_TYPE=prod /bin/bash -o pipefail -o errexit -o nounset -o nolog -c bash /scripts/docker/install_mysql.sh prod && bash /scripts/docker/install_mssql.sh prod && bash /scripts/docker/install_postgres.sh prod && adduser --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password --quiet "airflow" --uid "${AIRFLOW_UID}" --gid "0" --home "${AIRFLOW_USER_HOME_DIR}" && mkdir -pv "${AIRFLOW_HOME}" && mkdir -pv "${AIRFLOW_HOME}/dags" && mkdir -pv "${AIRFLOW_HOME}/logs" && chown -R airflow:0 "${AIRFLOW_USER_HOME_DIR}" "${AIRFLOW_HOME}" && chmod -R g+rw "${AIRFLOW_USER_HOME_DIR}" "${AIRFLOW_HOME}" && find "${AIRFLOW_HOME}" -executable ! -type l -print0 | xargs --null chmod g+x && find "${AIRFLOW_USER_HOME_DIR}" -executable ! -type l -print0 | xargs --null chmod g+x # buildkit |
| ARG AIRFLOW_SOURCES_FROM |
| ARG AIRFLOW_SOURCES_TO |
| COPY /home/airflow/.local /home/airflow/.local # buildkit |
| COPY /home/airflow/constraints.txt /home/airflow/constraints.txt # buildkit |
| COPY /Dockerfile /Dockerfile # buildkit |
| COPY entrypoint_prod.sh /entrypoint # buildkit |
| COPY clean-logs.sh /clean-logs # buildkit |
| COPY airflow-scheduler-autorestart.sh /airflow-scheduler-autorestart # buildkit |
| RUN |19 AIRFLOW_UID=50000 BASE_IMAGE=debian:bookworm-slim RUNTIME_APT_DEPS= ADDITIONAL_RUNTIME_APT_DEPS= RUNTIME_APT_COMMAND=echo ADDITIONAL_RUNTIME_APT_COMMAND= ADDITIONAL_RUNTIME_APT_ENV= INSTALL_MYSQL_CLIENT=true INSTALL_MYSQL_CLIENT_TYPE=mariadb INSTALL_MSSQL_CLIENT=true INSTALL_POSTGRES_CLIENT=true AIRFLOW_INSTALLATION_METHOD=apache-airflow AIRFLOW_IMAGE_REPOSITORY=https://github.com/apache/airflow AIRFLOW_IMAGE_README_URL=https://raw.githubusercontent.com/apache/airflow/main/docs/docker-stack/README.md AIRFLOW_USER_HOME_DIR=/home/airflow AIRFLOW_HOME=/opt/airflow AIRFLOW_IMAGE_TYPE=prod AIRFLOW_SOURCES_FROM=Dockerfile AIRFLOW_SOURCES_TO=/Dockerfile /bin/bash -o pipefail -o errexit -o nounset -o nolog -c chmod a+rx /entrypoint /clean-logs && chmod g=u /etc/passwd && chmod g+w "${AIRFLOW_USER_HOME_DIR}/.local" && usermod -g 0 airflow -G 0 # buildkit |
| RUN |19 AIRFLOW_UID=50000 BASE_IMAGE=debian:bookworm-slim RUNTIME_APT_DEPS= ADDITIONAL_RUNTIME_APT_DEPS= RUNTIME_APT_COMMAND=echo ADDITIONAL_RUNTIME_APT_COMMAND= ADDITIONAL_RUNTIME_APT_ENV= INSTALL_MYSQL_CLIENT=true INSTALL_MYSQL_CLIENT_TYPE=mariadb INSTALL_MSSQL_CLIENT=true INSTALL_POSTGRES_CLIENT=true AIRFLOW_INSTALLATION_METHOD=apache-airflow AIRFLOW_IMAGE_REPOSITORY=https://github.com/apache/airflow AIRFLOW_IMAGE_README_URL=https://raw.githubusercontent.com/apache/airflow/main/docs/docker-stack/README.md AIRFLOW_USER_HOME_DIR=/home/airflow AIRFLOW_HOME=/opt/airflow AIRFLOW_IMAGE_TYPE=prod AIRFLOW_SOURCES_FROM=Dockerfile AIRFLOW_SOURCES_TO=/Dockerfile /bin/bash -o pipefail -o errexit -o nounset -o nolog -c sed --in-place=.bak "s/secure_path=\"/secure_path=\"$(echo -n ${AIRFLOW_USER_HOME_DIR} | sed 's/\//\\\//g')\/.local\/bin:/" /etc/sudoers # buildkit |
| ARG AIRFLOW_VERSION |
| ARG AIRFLOW_PIP_VERSION |
| ARG AIRFLOW_UV_VERSION |
| ARG AIRFLOW_USE_UV |
| ARG AIRFLOW_PYTHON_VERSION |
| ENV DUMB_INIT_SETSID=1 PS1=(airflow) AIRFLOW_VERSION=3.1.6 AIRFLOW_PYTHON_VERSION=3.12.12 AIRFLOW__CORE__LOAD_EXAMPLES=false PATH=/root/bin:/home/airflow/.local/bin:/usr/python/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin AIRFLOW_PIP_VERSION=25.3 AIRFLOW_UV_VERSION=0.9.24 AIRFLOW_USE_UV=false |
| RUN |24 AIRFLOW_UID=50000 BASE_IMAGE=debian:bookworm-slim RUNTIME_APT_DEPS= ADDITIONAL_RUNTIME_APT_DEPS= RUNTIME_APT_COMMAND=echo ADDITIONAL_RUNTIME_APT_COMMAND= ADDITIONAL_RUNTIME_APT_ENV= INSTALL_MYSQL_CLIENT=true INSTALL_MYSQL_CLIENT_TYPE=mariadb INSTALL_MSSQL_CLIENT=true INSTALL_POSTGRES_CLIENT=true AIRFLOW_INSTALLATION_METHOD=apache-airflow AIRFLOW_IMAGE_REPOSITORY=https://github.com/apache/airflow AIRFLOW_IMAGE_README_URL=https://raw.githubusercontent.com/apache/airflow/main/docs/docker-stack/README.md AIRFLOW_USER_HOME_DIR=/home/airflow AIRFLOW_HOME=/opt/airflow AIRFLOW_IMAGE_TYPE=prod AIRFLOW_SOURCES_FROM=Dockerfile AIRFLOW_SOURCES_TO=/Dockerfile AIRFLOW_VERSION=3.1.6 AIRFLOW_PIP_VERSION=25.3 AIRFLOW_UV_VERSION=0.9.24 AIRFLOW_USE_UV=false AIRFLOW_PYTHON_VERSION=3.12.12 /bin/bash -o pipefail -o errexit -o nounset -o nolog -c mkdir -pv /root/bin # buildkit |
| COPY pip /root/bin/pip # buildkit |
| RUN |24 AIRFLOW_UID=50000 BASE_IMAGE=debian:bookworm-slim RUNTIME_APT_DEPS= ADDITIONAL_RUNTIME_APT_DEPS= RUNTIME_APT_COMMAND=echo ADDITIONAL_RUNTIME_APT_COMMAND= ADDITIONAL_RUNTIME_APT_ENV= INSTALL_MYSQL_CLIENT=true INSTALL_MYSQL_CLIENT_TYPE=mariadb INSTALL_MSSQL_CLIENT=true INSTALL_POSTGRES_CLIENT=true AIRFLOW_INSTALLATION_METHOD=apache-airflow AIRFLOW_IMAGE_REPOSITORY=https://github.com/apache/airflow AIRFLOW_IMAGE_README_URL=https://raw.githubusercontent.com/apache/airflow/main/docs/docker-stack/README.md AIRFLOW_USER_HOME_DIR=/home/airflow AIRFLOW_HOME=/opt/airflow AIRFLOW_IMAGE_TYPE=prod AIRFLOW_SOURCES_FROM=Dockerfile AIRFLOW_SOURCES_TO=/Dockerfile AIRFLOW_VERSION=3.1.6 AIRFLOW_PIP_VERSION=25.3 AIRFLOW_UV_VERSION=0.9.24 AIRFLOW_USE_UV=false AIRFLOW_PYTHON_VERSION=3.12.12 /bin/bash -o pipefail -o errexit -o nounset -o nolog -c chmod u+x /root/bin/pip # buildkit |
| WORKDIR /opt/airflow |
| EXPOSE map[8080/tcp:{}] |
| USER 50000 |
| ARG BUILD_ID |
| ARG COMMIT_SHA |
| ARG AIRFLOW_IMAGE_REPOSITORY |
| ARG AIRFLOW_IMAGE_DATE_CREATED |
| ENV BUILD_ID= COMMIT_SHA=eea9b500cc227c2195cb7653acee2ad27c795433 |
| LABEL org.apache.airflow.distro=debian org.apache.airflow.module=airflow org.apache.airflow.component=airflow org.apache.airflow.image=airflow org.apache.airflow.version=3.1.6 org.apache.airflow.python.version=3.12.12 org.apache.airflow.uid=50000 org.apache.airflow.main-image.build-id= org.apache.airflow.main-image.commit-sha=eea9b500cc227c2195cb7653acee2ad27c795433 org.opencontainers.image.source=https://github.com/apache/airflow org.opencontainers.image.created= org.opencontainers.image.authors=dev@airflow.apache.org org.opencontainers.image.url=https://airflow.apache.org org.opencontainers.image.documentation=https://airflow.apache.org/docs/docker-stack/index.html org.opencontainers.image.version=3.1.6 org.opencontainers.image.revision=eea9b500cc227c2195cb7653acee2ad27c795433 org.opencontainers.image.vendor=Apache Software Foundation org.opencontainers.image.licenses=Apache-2.0 org.opencontainers.image.ref.name=airflow org.opencontainers.image.title=Production Airflow Image org.opencontainers.image.description=Reference, production-ready Apache Airflow image |
| ENTRYPOINT ["/usr/bin/dumb-init" "--" "/entrypoint"] |
| CMD [] |
| USER root |
| ENV UV_KEYRING_PROVIDER=subprocess UV_PROJECT_ENVIRONMENT=/home/airflow/.local UV_CACHE_DIR=/tmp/uv-cache PATH=/root/.local/bin:/root/bin:/home/airflow/.local/bin:/usr/python/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| COPY /uv /uvx /bin/ # buildkit |
| RUN /bin/bash -o pipefail -o errexit -o nounset -o nolog -c uv tool install keyring --with keyrings.google-artifactregistry-auth # buildkit |
| WORKDIR /opt/airflow |
| COPY pyproject.toml uv.lock ./ # buildkit |
| RUN /bin/bash -o pipefail -o errexit -o nounset -o nolog -c GOOGLE_APPLICATION_CREDENTIALS=/tmp/service_account.json uv sync --locked --no-install-project # buildkit |
| COPY ./config /opt/airflow/config # buildkit |
| COPY ./dags/ /opt/airflow/dags/ # buildkit |
| RUN /bin/bash -o pipefail -o errexit -o nounset -o nolog -c chown -R airflow:root /opt/airflow && chmod -R 777 /opt/airflow/logs && find /opt/airflow/dags -path "*/.worktrees*" -type d -exec rm -rf {} + 2>/dev/null || true # buildkit |
| USER airflow |
| ENV AIRFLOW_CONFIG=/opt/airflow/config/airflow.cfg |
Labels
| Key | Value |
|---|---|
| org.apache.airflow.component | airflow |
| org.apache.airflow.distro | debian |
| org.apache.airflow.image | airflow |
| org.apache.airflow.main-image.build-id | |
| org.apache.airflow.main-image.commit-sha | eea9b500cc227c2195cb7653acee2ad27c795433 |
| org.apache.airflow.module | airflow |
| org.apache.airflow.python.version | 3.12.12 |
| org.apache.airflow.uid | 50000 |
| org.apache.airflow.version | 3.1.6 |
| org.opencontainers.image.authors | dev@airflow.apache.org |
| org.opencontainers.image.created | |
| org.opencontainers.image.description | Reference, production-ready Apache Airflow image |
| org.opencontainers.image.documentation | https://airflow.apache.org/docs/docker-stack/index.html |
| org.opencontainers.image.licenses | Apache-2.0 |
| org.opencontainers.image.ref.name | airflow |
| org.opencontainers.image.revision | eea9b500cc227c2195cb7653acee2ad27c795433 |
| org.opencontainers.image.source | https://github.com/apache/airflow |
| org.opencontainers.image.title | Production Airflow Image |
| org.opencontainers.image.url | https://airflow.apache.org |
| org.opencontainers.image.vendor | Apache Software Foundation |
| org.opencontainers.image.version | 3.1.6 |