Dockerfile 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. FROM ${HUEBASE_VERSION}
  2. LABEL description="Hue Project https://github.com/cloudera/hue"
  3. ARG GBN
  4. ARG GSHA
  5. ARG GBRANCH
  6. ARG VERSION
  7. ARG HUEUSER
  8. ARG HUE_CONF
  9. # Set the environment variable
  10. ENV NAME="hue" \
  11. HUE_USER=${HUEUSER} \
  12. HUE_HOME="/opt/${HUEUSER}" \
  13. HUE_CONF_DIR="${HUE_CONF}/conf" \
  14. HUE_LOG_DIR="/var/log/${HUEUSER}" \
  15. DESKTOP_LOG_DIR="/var/log/${HUEUSER}" \
  16. HUE_BUILDNO=${GBN} \
  17. HUE_SHAURL=${GSHA} \
  18. HUE_BRANCHURL=${GBRANCH} \
  19. HUE_VERSION=${VERSION} \
  20. HUE_BIN="/opt/${HUEUSER}/build/env/bin" \
  21. PATH=$PATH:${HUE_BIN} \
  22. SUPERVISOR_VERSION=4.0.2
  23. # Switch to non-root default user
  24. RUN yum install -y microdnf && \
  25. microdnf install -y shadow-utils findutils && \
  26. groupadd -g 1000 ${HUEUSER} && \
  27. useradd -g 1000 -d ${HUE_HOME} -s /bin/bash -u 1000 ${HUEUSER}
  28. COPY --chown=${HUEUSER}:${HUEUSER} ${HUEUSER} ${HUE_HOME}
  29. COPY --chown=${HUEUSER}:${HUEUSER} hue.sh ${HUE_HOME}/hue.sh
  30. # Install psycopg2-binary
  31. RUN $HUE_BIN/python3.8 -m pip install --upgrade pip --force && $HUE_BIN/pip install psycopg2-binary
  32. # Setup directory structure
  33. RUN mkdir -p ${HUE_LOG_DIR} && chown -R ${HUEUSER}:${HUEUSER} ${HUE_LOG_DIR}
  34. RUN mkdir -p ${HUE_CONF} && chown -R ${HUEUSER}:${HUEUSER} ${HUE_CONF}
  35. # sudo privilege
  36. RUN echo "${HUEUSER} ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/${HUEUSER} && \
  37. chmod 0440 /etc/sudoers.d/${HUEUSER}
  38. COPY --chown=${HUEUSER}:${HUEUSER} hueconf ${HUE_CONF}/conf
  39. RUN ln -s ${HUE_CONF}/conf/log.conf ${HUE_HOME}/desktop/conf/log.conf; \
  40. ln -s ${HUE_CONF}/conf/gunicorn_log.conf ${HUE_HOME}/desktop/conf/gunicorn_log.conf; \
  41. ln -s ${HUE_CONF}/conf/log4j.properties ${HUE_HOME}/desktop/conf/log4j.properties
  42. # supervisor stuff
  43. RUN mkdir -p /etc/supervisor.d/ && chmod +w /etc/supervisor.d && mkdir -p /var/log/root && chown -R ${HUEUSER}:${HUEUSER} /var/log/root
  44. ADD supervisor-files/etc/supervisord.conf /etc/supervisord.conf
  45. ADD supervisor-files/hue_server.conf /etc/supervisor.d/
  46. ADD supervisor-files/hue_ktrenewer.conf /etc/supervisor.d/
  47. ADD supervisor-files/hue_loglistener.conf /etc/supervisor.d/
  48. RUN chown -R ${HUEUSER}:${HUEUSER} /etc/supervisord.conf && chown -R ${HUEUSER}:${HUEUSER} /etc/supervisor.d
  49. # Remove chardet package
  50. RUN rm -rf ${HUE_HOME}/build/env/lib/python3.8/site-packages/pip/_vendor/chardet
  51. EXPOSE 8888 9111
  52. # Switch to non-root default user
  53. USER hive
  54. ENV USER hive
  55. WORKDIR ${HUE_HOME}
  56. CMD ["/usr/local/bin/supervisord","-c","/etc/supervisord.conf"]