Advertisement
Guest User

Untitled

a guest
Feb 17th, 2022
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.36 KB | None | 0 0
  1. FROM --platform=linux/amd64 python:3.8-slim-buster
  2.  
  3. # Never prompt the user for choices on installation/configuration of packages
  4. ENV DEBIAN_FRONTEND noninteractive
  5. ENV TERM linux
  6.  
  7. # Airflow
  8. ARG AIRFLOW_VERSION=2.1.3
  9. ARG AIRFLOW_USER_HOME=/usr/local/airflow
  10. ENV AIRFLOW_HOME=${AIRFLOW_USER_HOME}
  11. ARG AIRFLOW_DEPS=""
  12. ARG PYTHON_DEPS=""
  13. ARG PYTHON_VERSION=3.8
  14. ARG CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-3.8.txt"
  15.  
  16. # Define ru_RU.
  17. ENV LANGUAGE ru_RU.UTF-8
  18. ENV LANG ru_RU.UTF-8
  19. ENV LC_ALL ru_RU.UTF-8
  20. ENV LC_CTYPE ru_RU.UTF-8
  21. ENV LC_MESSAGES ru_RU.UTF-8
  22.  
  23. # Disable noisy "Handling signal" log messages:
  24. #ENV GUNICORN_CMD_ARGS --log-level WARNING
  25.  
  26. ARG BUILD_DEPS=" \
  27. freetds-dev \
  28. libkrb5-dev \
  29. libsasl2-dev \
  30. libssl-dev \
  31. libffi-dev \
  32. libpq-dev \
  33. git \
  34. unixodbc-dev \
  35. "
  36.  
  37. RUN set -ex \
  38. && apt-get update -yqq \
  39. && apt-get upgrade -yqq \
  40. && apt-get install -yqq --no-install-recommends \
  41. ${BUILD_DEPS} \
  42. freetds-bin \
  43. build-essential \
  44. default-libmysqlclient-dev \
  45. apt-utils \
  46. curl \
  47. rsync \
  48. redis-server \
  49. netcat \
  50. locales \
  51. gnupg2 \
  52. gcc \
  53. default-libmysqlclient-dev \
  54. smbclient \
  55. && sed -i 's/^# ru_RU.UTF-8 UTF-8$/ru_RU.UTF-8 UTF-8/g' /etc/locale.gen \
  56. && locale-gen \
  57. && update-locale LANG=ru_RU.UTF-8 LC_ALL=ru_RU.UTF-8 \
  58. && useradd -ms /bin/bash -d ${AIRFLOW_USER_HOME} airflow
  59. RUN pip install -U pip setuptools wheel \
  60. && pip install pytz \
  61. && pip install pyOpenSSL \
  62. && pip install ndg-httpsclient \
  63. && pip install pyodbc \
  64. && pip install psycopg2 \
  65. && pip install pyasn1 \
  66. && pip install pymssql \
  67. && pip install mysqlclient \
  68. && pip install xmltodict \
  69. && pip install lxml \
  70. && pip install ldap3 \
  71. && pip install openpyxl
  72. RUN pip install -U apache-airflow[crypto,celery,postgres,vertica,odbc,password]==${AIRFLOW_VERSION} --constraint "${CONSTRAINT_URL}"
  73. RUN pip install -U 'apache-airflow-providers-papermill' \
  74. && pip install 'apache-airflow-providers-postgres' \
  75. && pip install 'apache-airflow-providers-vertica' \
  76. && pip install 'apache-airflow-providers-ssh' \
  77. && pip install 'apache-airflow-providers-mysql' \
  78. && pip install 'apache-airflow-providers-microsoft-mssql' \
  79. && pip install 'apache-airflow-providers-celery' \
  80. && pip install redis \
  81. && pip install flask-bcrypt \
  82. && pip install papermill \
  83. && pip install jupyterlab \
  84. && pip install xlrd \
  85. && pip install airflow-clickhouse-plugin
  86. RUN apt-get install -yqq --no-install-recommends unzip
  87. RUN if [ -n "${PYTHON_DEPS}" ]; then pip install ${PYTHON_DEPS}; fi \
  88. && apt-get purge --auto-remove -yqq ${BUILD_DEPS} \
  89. && apt-get autoremove -yqq --purge \
  90. && apt-get clean \
  91. && rm -rf \
  92. /var/lib/apt/lists/* \
  93. /tmp/* \
  94. /var/tmp/* \
  95. /usr/share/man \
  96. /usr/share/doc \
  97. /usr/share/doc-base
  98.  
  99. # Install microsoft odbc driver. And fix mssql openssl problem
  100. RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
  101. && curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list \
  102. && apt-get update \
  103. && ACCEPT_EULA=Y apt-get install msodbcsql17 -y \
  104. && chmod +rwx /etc/ssl/openssl.cnf \
  105. && sed -i 's/TLSv1.2/TLSv1/g' /etc/ssl/openssl.cnf \
  106. && sed -i 's/SECLEVEL=2/SECLEVEL=1/g' /etc/ssl/openssl.cnf
  107.  
  108. RUN mkdir -p /var/log/airflow /var/spool/airflow /var/notebooks/output /tmp/notebooks \
  109. && chown -R airflow: ${AIRFLOW_USER_HOME} \
  110. && chown -R airflow: /var/log/airflow \
  111. && chown -R airflow: /var/spool/airflow \
  112. && chown -R airflow: /var/notebooks/output \
  113. && chown -R airflow: /tmp/notebooks \
  114. && chown -R airflow: /var/run/samba \
  115. && chown -R airflow: /var/lib/samba/private
  116.  
  117. # Copy custom Airflow providers to python lib directory
  118. COPY ./providers/ /usr/local/lib/python3.8/site-packages/airflow/providers/
  119.  
  120. COPY ./ ${AIRFLOW_USER_HOME}
  121.  
  122. # Set additional python path for shared libraries form Airflow to Jupyther notebooks
  123. ENV PYTHONPATH=${AIRFLOW_USER_HOME}
  124.  
  125. EXPOSE 8080 5555 8793 8888
  126.  
  127. USER airflow
  128. WORKDIR ${AIRFLOW_USER_HOME}
  129. ENTRYPOINT ["./entrypoint.sh"]
  130.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement