浏览代码

HUE-9271 [core] Use UBI base images for Hue images (#1105)

Prakash Ranade 5 年之前
父节点
当前提交
49e20f2475

+ 1 - 1
tools/container/base/hue/Dockerfile

@@ -1,4 +1,4 @@
-FROM docker-private.infra.cloudera.com/cloudera_base/centos:7.6.1810 as base-centos-jdk
+FROM registry.access.redhat.com/ubi7/ubi as base-ubi-7
 
 LABEL description="Hue Project https://github.com/cloudera/hue"
 

+ 2 - 1
tools/container/base/huelb/Dockerfile

@@ -1,4 +1,4 @@
-FROM docker-private.infra.cloudera.com/cloudera_base/centos:7.6.1810 as base-centos-jdk
+FROM registry.access.redhat.com/ubi7/ubi as base-ubi-7
 
 LABEL description="Hue Project https://github.com/cloudera/hue"
 
@@ -7,6 +7,7 @@ ENV NAME="basehue"
 
 RUN set -eux; \
       yum install -y \
+        hostname \
         httpd \
         httpd-tools \
         gettext \

+ 51 - 11
tools/container/build.sh

@@ -9,24 +9,45 @@ HUE_DIR=$WORK_DIR/hue
 APACHE_DIR=$WORK_DIR/huelb
 BASEHUE_DIR=$WORK_DIR/base/hue
 BASEHUELB_DIR=$WORK_DIR/base/huelb
-HUEBASE_VERSION=huebase_centos:7.6.0.1
-HUELBBASE_VERSION=huelb_httpd:2.4.7.6
+HUEBASE_VERSION=huebase_ubi:7.5.1
+HUELBBASE_VERSION=huelb_httpd_ubi:2.4
+COMPILEHUE_DIR=$WORK_DIR/compile/hue
+COMPILEHUE_VERSION=huecompile_ubi:7.5.1
 HUEUSER="hive"
+CONTAINER=$(uuidgen | cut -d"-" -f5)
+CONTAINER_HUE_SRC=/root/hue
+CONTAINER_HUE_OPT=/opt
 
 if [ -z "$REGISTRY" ]; then
   REGISTRY=${REGISTRY:-"docker.io/hortonworks"}
 fi
 
 compile_hue() {
-  mkdir -p $BUILD_DIR
-  cd $HUE_SRC
-  PREFIX=$BUILD_DIR make install
-  cd $BUILD_DIR/hue
+  mkdir -p $CONTAINER_HUE_OPT
+  cd $CONTAINER_HUE_SRC
+  PREFIX=$CONTAINER_HUE_OPT make install
+  cd $CONTAINER_HUE_OPT/hue
   APPS=$(find apps -maxdepth 2 -name "src" -type d|cut -d"/" -f2|sort| sed 's/[^ ]* */apps\/&/g')
   ./build/env/bin/python tools/app_reg/app_reg.py --install $APPS --relative-paths
   bash tools/relocatable.sh
 }
 
+docker_hue_compile() {
+  export HUE_USER="hive"
+  export HUE_CONF="/etc/hue"
+  export HUE_HOME="/opt/${HUEUSER}"
+  export HUE_CONF_DIR="${HUE_CONF}/conf"
+  export HUE_LOG_DIR="/var/log/${HUEUSER}"
+  export UUID_GEN=$(uuidgen | cut -d"-" -f5)
+
+  mkdir -p $BUILD_DIR
+  docker run -dt --name $CONTAINER $COMPILEHUE_VERSION /bin/bash
+  docker container cp $HUE_SRC $CONTAINER:$CONTAINER_HUE_SRC
+  docker container exec -it $CONTAINER $CONTAINER_HUE_SRC/tools/container/build.sh compile_hue
+  docker container cp $CONTAINER:$CONTAINER_HUE_OPT/hue $BUILD_DIR
+  docker container stop $CONTAINER
+}
+
 find_git_state() {
   cd $HUE_SRC
   export GBRANCH=$(git ls-remote  --get-url)"/commits/"$(git rev-parse --abbrev-ref HEAD)
@@ -116,6 +137,14 @@ build_huelbbase() {
   docker pull ${REGISTRY}/$HUELBBASE_VERSION
 }
 
+build_huecompilebase() {
+  cd $COMPILEHUE_DIR
+  docker build -f $COMPILEHUE_DIR/Dockerfile -t ${REGISTRY}/$COMPILEHUE_VERSION .
+  docker tag ${REGISTRY}/$COMPILEHUE_VERSION $COMPILEHUE_VERSION
+  docker push ${REGISTRY}/$COMPILEHUE_VERSION
+  docker pull ${REGISTRY}/$COMPILEHUE_VERSION
+}
+
 pull_base_images() {
   set +e
 
@@ -130,11 +159,22 @@ pull_base_images() {
     build_huelbbase
   fi
   docker tag ${REGISTRY}/$HUELBBASE_VERSION $HUELBBASE_VERSION
+
+  docker pull ${REGISTRY}/$COMPILEHUE_VERSION
+  if [[ $? != 0 ]]; then
+    build_huecompilebase
+  fi
+  docker tag ${REGISTRY}/$COMPILEHUE_VERSION $COMPILEHUE_VERSION
+
   set -e
 }
 
-compile_hue
-find_git_state
-pull_base_images
-docker_hue_build
-docker_huelb_build
+if [[ $1 == "compile_hue" ]]; then
+  compile_hue
+else
+  pull_base_images
+  find_git_state
+  docker_hue_compile
+  docker_hue_build
+  docker_huelb_build
+fi

+ 63 - 0
tools/container/compile/hue/Dockerfile

@@ -0,0 +1,63 @@
+FROM registry.access.redhat.com/ubi7/ubi as base-ubi-7
+
+LABEL description="Hue Project https://github.com/cloudera/hue"
+
+# Set the environment variable
+ENV NAME="basehue"
+
+# Required for building Hue
+RUN set -eux; \
+    yum install -y \
+      ant \
+      asciidoc \
+      bzip2-devel \
+      curl \
+      cyrus-sasl-devel \
+      cyrus-sasl-gssapi \
+      cyrus-sasl-plain \
+      gcc \
+      gcc-c++ \
+      gettext \
+      git \
+      gmp-devel \
+      java-1.8.0-openjdk-devel \
+      krb5-devel \
+      krb5-libs \
+      krb5-workstation \
+      libffi-devel \
+      libtidy \
+      libxml2-devel \
+      libxslt-devel \
+      make \
+      maven \
+      mysql-devel \
+      nc \
+      ncurses-devel \
+      nmap-ncat \
+      openldap-devel \
+      openssl \
+      openssl-devel \
+      postgresql \
+      postgresql-libs \
+      python-devel \
+      python-setuptools \
+      readline-devel \
+      sqlite-devel \
+      sudo \
+      swig \
+      tar \
+      which \
+      xmlsec1 \
+      xmlsec1-openssl \
+      zlib-devel
+
+RUN set -eux; easy_install supervisor pip
+
+RUN curl -s https://files.pythonhosted.org/packages/a1/92/a27986cb7b4bddc7d57781a0e1163d683110907edfca1db3fbce25536492/psycopg2_binary-2.8.3-cp27-cp27mu-manylinux1_x86_64.whl -o /tmp/psycopg2_binary-2.8.3-cp27-cp27mu-manylinux1_x86_64.whl
+
+RUN set -eux ; \
+      curl -sL https://rpm.nodesource.com/setup_10.x | bash - \
+        && yum install -y nodejs \
+        && yum clean all -y
+
+CMD ["/bin/bash"]