airflow_custom/airflow (latest)
Published 2025-01-18 02:51:17 +00:00 by harmacist
Installation
docker pull git.carinae.org/harmacist/airflow_custom/airflow:latest
sha256:4dc446a1a33bd4a0a0d799dc08d9d0d01b652bb98da61ae187ddba0fd787c64a
About this package
Reference, production-ready Apache Airflow image
Image Layers
# debian.sh --arch 'amd64' out/ 'bookworm' '@1733097600' |
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
ENV LANG=C.UTF-8 |
RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates netbase tzdata ; rm -rf /var/lib/apt/lists/* # buildkit |
ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305 |
ENV PYTHON_VERSION=3.12.8 |
ENV PYTHON_SHA256=c909157bb25ec114e5869124cc2a9c4a4d4c1e957ca4ff553f1edc692101154e |
RUN /bin/sh -c set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends dpkg-dev gcc gnupg libbluetooth-dev libbz2-dev libc6-dev libdb-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libreadline-dev libsqlite3-dev libssl-dev make tk-dev uuid-dev wget xz-utils zlib1g-dev ; wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; echo "$PYTHON_SHA256 *python.tar.xz" | sha256sum -c -; wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; gpg --batch --verify python.tar.xz.asc python.tar.xz; gpgconf --kill all; rm -rf "$GNUPGHOME" python.tar.xz.asc; mkdir -p /usr/src/python; tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; rm python.tar.xz; cd /usr/src/python; gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; ./configure --build="$gnuArch" --enable-loadable-sqlite-extensions --enable-optimizations --enable-option-checking=fatal --enable-shared --with-lto --with-ensurepip ; nproc="$(nproc)"; EXTRA_CFLAGS="$(dpkg-buildflags --get CFLAGS)"; LDFLAGS="$(dpkg-buildflags --get LDFLAGS)"; LDFLAGS="${LDFLAGS:--Wl},--strip-all"; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-}" ; rm python; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:--Wl},-rpath='\$\$ORIGIN/../lib'" python ; make install; cd /; rm -rf /usr/src/python; find /usr/local -depth \( \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \) -exec rm -rf '{}' + ; ldconfig; apt-mark auto '.*' > /dev/null; apt-mark manual $savedAptMark; find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' | sort -u | xargs -r dpkg-query --search | cut -d: -f1 | sort -u | xargs -r apt-mark manual ; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; rm -rf /var/lib/apt/lists/*; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 --version # buildkit |
RUN /bin/sh -c set -eux; for src in idle3 pip3 pydoc3 python3 python3-config; do dst="$(echo "$src" | tr -d 3)"; [ -s "/usr/local/bin/$src" ]; [ ! -e "/usr/local/bin/$dst" ]; ln -svT "$src" "/usr/local/bin/$dst"; done # buildkit |
CMD ["python3"] |
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 PYTHON_BASE_IMAGE |
ENV PYTHON_BASE_IMAGE=python:3.12-slim-bookworm 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 LD_LIBRARY_PATH=/usr/local/lib |
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 |
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= |
COPY install_os_dependencies.sh /scripts/docker/ # buildkit |
RUN |11 AIRFLOW_UID=50000 PYTHON_BASE_IMAGE=python:3.12-slim-bookworm 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 /bin/bash -o pipefail -o errexit -o nounset -o nolog -c bash /scripts/docker/install_os_dependencies.sh runtime # buildkit |
ARG AIRFLOW_INSTALLATION_METHOD=apache-airflow |
ARG AIRFLOW_IMAGE_REPOSITORY |
ARG AIRFLOW_IMAGE_README_URL |
ARG AIRFLOW_USER_HOME_DIR |
ARG AIRFLOW_HOME |
ENV PATH=/home/airflow/.local/bin:/usr/local/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 |
COPY common.sh /scripts/docker/ # buildkit |
COPY install_mysql.sh install_mssql.sh install_postgres.sh /scripts/docker/ # buildkit |
RUN |16 AIRFLOW_UID=50000 PYTHON_BASE_IMAGE=python:3.12-slim-bookworm 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 /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 |18 AIRFLOW_UID=50000 PYTHON_BASE_IMAGE=python:3.12-slim-bookworm 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_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 |18 AIRFLOW_UID=50000 PYTHON_BASE_IMAGE=python:3.12-slim-bookworm 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_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 |
ENV DUMB_INIT_SETSID=1 PS1=(airflow) AIRFLOW_VERSION=2.10.4 AIRFLOW__CORE__LOAD_EXAMPLES=false PATH=/root/bin:/home/airflow/.local/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin AIRFLOW_PIP_VERSION=24.3.1 AIRFLOW_UV_VERSION=0.4.29 AIRFLOW_USE_UV=false |
RUN |22 AIRFLOW_UID=50000 PYTHON_BASE_IMAGE=python:3.12-slim-bookworm 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_SOURCES_FROM=Dockerfile AIRFLOW_SOURCES_TO=/Dockerfile AIRFLOW_VERSION=2.10.4 AIRFLOW_PIP_VERSION=24.3.1 AIRFLOW_UV_VERSION=0.4.29 AIRFLOW_USE_UV=false /bin/bash -o pipefail -o errexit -o nounset -o nolog -c mkdir -pv /root/bin # buildkit |
COPY pip /root/bin/pip # buildkit |
RUN |22 AIRFLOW_UID=50000 PYTHON_BASE_IMAGE=python:3.12-slim-bookworm 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_SOURCES_FROM=Dockerfile AIRFLOW_SOURCES_TO=/Dockerfile AIRFLOW_VERSION=2.10.4 AIRFLOW_PIP_VERSION=24.3.1 AIRFLOW_UV_VERSION=0.4.29 AIRFLOW_USE_UV=false /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=c083e456fa02c6cb32cdbe0c9ed3c3b2380beccd |
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=2.10.4 org.apache.airflow.uid=50000 org.apache.airflow.main-image.build-id= org.apache.airflow.main-image.commit-sha=c083e456fa02c6cb32cdbe0c9ed3c3b2380beccd 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=2.10.4 org.opencontainers.image.revision=c083e456fa02c6cb32cdbe0c9ed3c3b2380beccd 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 |
RUN /bin/bash -o pipefail -o errexit -o nounset -o nolog -c apt-get update && apt-get install -y --no-install-recommends vim gcc python3-dev heimdal-dev && apt-get autoremove -yqq --purge && apt-get clean # buildkit |
USER airflow |
ARG AIRFLOW_VERSION=2.10.4 |
ARG AIRFLOW_EXTRAS=celery,microsoft.mssql,jdbc,ssh,async,docker,oracle,ldap,sftp,postgres,redis |
ARG AIRFLOW_HOME_DIR=/opt/airflow |
ARG AIRFLOW_USER_HOME_DIR=/home/airflow |
ENV AIRFLOW_VERSION=2.10.4 |
ENV AIRFLOW_EXTRAS=celery,microsoft.mssql,jdbc,ssh,async,docker,oracle,ldap,sftp,postgres,redis |
ENV AIRFLOW_HOME_DIR=/opt/airflow |
ENV AIRFLOW_USER_HOME_DIR=/home/airflow |
ENV AIRFLOW_HOME=/opt/airflow |
ENV AIRFLOW__CORE__LOAD_EXAMPLES=false |
RUN |4 AIRFLOW_VERSION=2.10.4 AIRFLOW_EXTRAS=celery,microsoft.mssql,jdbc,ssh,async,docker,oracle,ldap,sftp,postgres,redis AIRFLOW_HOME_DIR=/opt/airflow AIRFLOW_USER_HOME_DIR=/home/airflow /bin/bash -o pipefail -o errexit -o nounset -o nolog -c pip install apache-airflow-providers-amazon apache-airflow-providers-apache-spark apache-airflow-providers-apache-kafka apache-airflow-providers-apache-hive apache-airflow-providers-apache-hdfs apache-airflow-providers-apache-iceberg apache-airflow-providers-apache-cassandra apache-airflow-providers-common-sql apache-airflow-providers-cncf-kubernetes apache-airflow-providers-discord apache-airflow-providers-github apache-airflow-providers-hashicorp apache-airflow-providers-openai apache-airflow-providers-postgres apache-airflow-providers-mysql apache-airflow-providers-mongo apache-airflow-providers-elasticsearch apache-airflow-providers-docker apache-airflow-providers-openfaas apache-airflow-providers-samba apache-airflow-providers-sftp apache-airflow-providers-smtp apache-airflow-providers-tableau apache-airflow-providers-telegram beautifulsoup4 # buildkit |
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 | c083e456fa02c6cb32cdbe0c9ed3c3b2380beccd |
org.apache.airflow.module | airflow |
org.apache.airflow.uid | 50000 |
org.apache.airflow.version | 2.10.4 |
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 | c083e456fa02c6cb32cdbe0c9ed3c3b2380beccd |
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 | 2.10.4 |