61 lines
1.7 KiB
Docker
61 lines
1.7 KiB
Docker
FROM library/python:3.7-slim-buster
|
|
|
|
ARG AIRFLOW_VERSION="2.0.0"
|
|
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=${AIRFLOW_VERSION}
|
|
ENV AIRFLOW_EXTRAS=${AIRFLOW_EXTRAS}
|
|
ENV AIRFLOW_HOME_DIR=${AIRFLOW_HOME_DIR}
|
|
ENV AIRFLOW_USER_HOME_DIR=${AIRFLOW_USER_HOME_DIR}
|
|
ENV AIRFLOW_HOME=${AIRFLOW_HOME_DIR}
|
|
|
|
ENV AIRFLOW__CORE__LOAD_EXAMPLES="false"
|
|
|
|
# COPY custom_sources.list /etc/apt/sources.list
|
|
# COPY custom_pip_conf.conf /etc/pip.conf
|
|
|
|
RUN apt-get update \
|
|
&& mkdir -pv /usr/share/man/man1 \
|
|
&& mkdir -pv /usr/share/man/man7 \
|
|
&& apt-get install -yqq \
|
|
python3-pip \
|
|
default-jre-headless \
|
|
gcc \
|
|
ca-certificates \
|
|
build-essential \
|
|
ldap-utils \
|
|
libsasl2-dev \
|
|
python-dev \
|
|
libldap2-dev \
|
|
libssl-dev \
|
|
openssh-server \
|
|
&& apt-get autoremove -yqq --purge \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN pip install apache-airflow[${AIRFLOW_EXTRAS}]==${AIRFLOW_VERSION}
|
|
RUN pip install pyldap bs4 exchangelib XlsxWriter openpyxl wmi smbprotocol
|
|
|
|
# User Setup
|
|
RUN addgrouop --gid "50000" "airflow" && \
|
|
adduser --quiet "airflow" --uid "50000" \
|
|
--gid "50000" \
|
|
--home "${AIRFLOW_USER_HOME_DIR}"
|
|
|
|
RUN mkdir -pv "${AIRFLOW_HOME_DIR}"; \
|
|
mkdir -pv "${AIRFLOW_HOME_DIR}/dags"; \
|
|
mkdir -pv "${AIRFLOW_HOME_DIR}/logs"; \
|
|
chown -R "airflow:root" "${AIRFLOW_USER_HOME_DIR}" "${AIRFLOW_HOME}";
|
|
|
|
RUN chmod g=u /etc/passwd
|
|
|
|
ENV PATH="${AIRFLOW_USER_HOME_DIR}/.local/bin:${PATH}:/root/.local/bin"
|
|
RUN mkdir -p /root/.local/bin
|
|
|
|
WORKDIR ${AIRFLOW_HOME}
|
|
|
|
USER airflow
|
|
|
|
CMD airflow db init && airflow webserver |