You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2021/03/21 03:22:02 UTC

[incubator-doris] branch master updated: [Docker] Update Dockerfile using gcc 10 (#5380)

This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 97134c6  [Docker] Update Dockerfile using gcc 10 (#5380)
97134c6 is described below

commit 97134c64e48cfc5e54b0f133b732c7196438a0b6
Author: Zhengguo Yang <ya...@gmail.com>
AuthorDate: Sun Mar 21 11:21:54 2021 +0800

    [Docker] Update Dockerfile using gcc 10 (#5380)
    
    Update Dockerfile ,using gcc 10 as default compiler
---
 docker/Dockerfile                      | 151 ++++++++++++++++++---------------
 docker/{Dockerfile => Dockerfile.gcc7} |  25 ++++--
 2 files changed, 99 insertions(+), 77 deletions(-)

diff --git a/docker/Dockerfile b/docker/Dockerfile
index b74b0cf..be40014 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -15,87 +15,84 @@
 # specific language governing permissions and limitations
 # under the License.
 
-FROM centos:centos7.5.1804
+FROM centos:7 AS builder
 
-LABEL maintainer=tangxiaoqing214445
+# install gcc-10 repo
+RUN echo $'\
+[ol7_software_collections]\n\
+name=Software Collection packages for Oracle Linux 7 ($basearch)\n\
+baseurl=http://yum.oracle.com/repo/OracleLinux/OL7/SoftwareCollections/$basearch/\n\
+gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle\n\
+gpgcheck=1\n\
+enabled=1' >> /etc/yum.repos.d/CentOS-SCLo-scl.ol.repo
 
-ENV DEFAULT_DIR /var/local
+# install dependencies
+RUN yum makecache && yum -y update && yum -y groupinstall 'Development Tools' && \
+    yum install -y byacc automake java-11-openjdk-devel libtool bison binutils-devel zip unzip \
+    ncurses-devel curl git wget python2 glibc-static libstdc++-static which psl libpsl-devel
 
-# install nodejs
-COPY ./node-v14.8.0-linux-x64.tar.xz /tmp/
-RUN tar xf /tmp/node-v14.8.0-linux-x64.tar.xz -C ${DEFAULT_DIR}/ \
-    && rm /tmp/node-v14.8.0-linux-x64.tar.xz
-
-ENV PATH ${DEFAULT_DIR}/node-v14.8.0-linux-x64/bin:$PATH
-
-ARG GCC_VERSION=7.3.0
-ARG GCC_URL=https://mirrors.ustc.edu.cn/gnu/gcc/gcc-${GCC_VERSION}
-
-# install dependencies and build gcc
-RUN yum install -y bzip2 wget git gcc-c++ libstdc++-static byacc flex automake libtool binutils-devel bison ncurses-devel make mlocate unzip patch which vim-common redhat-lsb-core zip libcurl-devel \
-  && updatedb \
-  && yum -y clean all \
-  && rm -rf /var/cache/yum \
-  && mkdir -p  /var/local/gcc \
-  && curl -fsSL -o /tmp/gcc.tar.gz  ${GCC_URL}/gcc-${GCC_VERSION}.tar.gz \
-  && tar -xzf /tmp/gcc.tar.gz -C /var/local/gcc --strip-components=1 \
-  && cd /var/local/gcc \
-  && sed -i 's/ftp:\/\/gcc.gnu.org\/pub\/gcc\/infrastructure\//http:\/\/mirror.linux-ia64.org\/gnu\/gcc\/infrastructure\//g' contrib/download_prerequisites \
-  && ./contrib/download_prerequisites \
-  && ./configure --disable-multilib --enable-languages=c,c++ --prefix=/usr \
-  && make -j$[$(nproc)/4+1] && make install \
-  && rm -rf /var/local/gcc \
-  && rm -f /tmp/gcc.tar.gz
+# install gcc10
+RUN wget http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol7 -O /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle && \
+    rpm --import  /etc/pki/rpm-gpg/RPM-GPG-KEY-* && \
+    yum install -y devtoolset-10-gcc* 
+
+ENV JAVA_HOME="/usr/lib/jvm/java-11"
 
 # build cmake
-ARG CMAKE_VERSION=3.12.3
-ARG CMAKE_DOWNLOAD_URL=https://cmake.org/files/v3.12/cmake-${CMAKE_VERSION}.tar.gz
-RUN mkdir -p /tmp/cmake && curl -fsSL -o /tmp/cmake.tar.gz ${CMAKE_DOWNLOAD_URL} \
-    && tar -zxf /tmp/cmake.tar.gz -C /tmp/cmake --strip-components=1 \
-    && cd /tmp/cmake \
-    && ./bootstrap --system-curl \
-    && gmake -j$[$(nproc)/4+1] \
-    && gmake install \
-    && rm -rf /tmp/cmake.tar.gz \
-    && rm -rf /tmp/cmake
-
-# install jdk
-COPY ./jdk.rpm ./
-RUN touch  ${DEFAULT_DIR}/install_jdk.sh \
-    && echo '#!/bin/bash' >> ${DEFAULT_DIR}/install_jdk.sh \
-    && echo 'rpm -Uvh jdk.rpm > /dev/null 2>&1' >>  ${DEFAULT_DIR}/install_jdk.sh \
-    && echo 'mv /usr/java/jdk* /usr/java/jdk' >>  ${DEFAULT_DIR}/install_jdk.sh \
-    && echo 'export JAVA_HOME=/usr/java/jdk' >>  ${DEFAULT_DIR}/install_jdk.sh \
-    && echo 'echo "export JAVA_HOME=/usr/java/jdk" >> /etc/environment' >>  ${DEFAULT_DIR}/install_jdk.sh \
-    && echo 'export JRE_HOME=/usr/java/jdk/jre' >>  ${DEFAULT_DIR}/install_jdk.sh \
-    && echo 'echo "export JRE_HOME=/usr/java/jdk/jre" >> /etc/environment' >>  ${DEFAULT_DIR}/install_jdk.sh \
-    && echo 'ls /usr/java/jdk > /dev/null 2>&1' >>  ${DEFAULT_DIR}/install_jdk.sh \
-    && echo 'echo "export JAVA_HOME=/usr/java/jdk" >> /root/.bashrc' >> ${DEFAULT_DIR}/install_jdk.sh \
-    && chmod 777 ${DEFAULT_DIR}/install_jdk.sh \
-    && /bin/bash ${DEFAULT_DIR}/install_jdk.sh \
-    && rm -rf *.rpm \
-    && rm ${DEFAULT_DIR}/install_jdk.sh
-
-ENV JAVA_HOME /usr/java/jdk
+ARG CMAKE_VERSION=3.19.4
+ARG CMAKE_BASE_URL=https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}
+RUN wget ${CMAKE_BASE_URL}/cmake-${CMAKE_VERSION}-Linux-x86_64.sh -q -O /tmp/cmake-install.sh && \
+    chmod u+x /tmp/cmake-install.sh && \
+    /tmp/cmake-install.sh --skip-license --prefix=/usr --exclude-subdir && \
+    rm /tmp/cmake-install.sh
+      
+# build  ninja
+ARG NINJA_VER=1.10.2
+ARG NINJA_BASE_URL=https://github.com/ninja-build/ninja/releases/download/v${NINJA_VER}
+RUN wget -q ${NINJA_BASE_URL}/ninja-linux.zip -O /tmp/ninja-linux.zip && \
+    unzip /tmp/ninja-linux.zip -d /usr/bin/ && \
+    rm /tmp/ninja-linux.zip
 
 # install maven 3.6.3
-ARG SHA=c35a1803a6e70a126e80b2b3ae33eed961f83ed74d18fcd16909b2d44d7dada3203f1ffe726c17ef8dcca2dcaa9fca676987befeadc9b9f759967a8cb77181c0
-ARG MAVEN_URL=http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
-
-RUN mkdir -p /usr/share/maven /usr/share/maven/ref \
-  && curl -fsSL -o /tmp/apache-maven.tar.gz ${MAVEN_URL} \
-  && echo "${SHA} /tmp/apache-maven.tar.gz" | sha512sum -c - \
-  && tar -xzf /tmp/apache-maven.tar.gz -C /usr/share/maven --strip-components=1 \
-  && rm -f /tmp/apache-maven.tar.gz \
-  && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn
+ARG MAVEN_VERSION=3.6.3
+ARG MAVEN_BASE_URL=https://downloads.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries
+RUN mkdir -p /usr/share/maven /usr/share/maven/ref && \
+    curl -fsSL -o /tmp/apache-maven.tar.gz ${MAVEN_BASE_URL}/apache-maven-${MAVEN_VERSION}-bin.tar.gz && \
+    tar -xzf /tmp/apache-maven.tar.gz -C /usr/share/maven --strip-components=1 && \
+    rm -f /tmp/apache-maven.tar.gz && \
+    ln -s /usr/share/maven/bin/mvn /usr/bin/mvn
 
 ENV MAVEN_HOME /usr/share/maven
 
-# build environment
-WORKDIR ${DEFAULT_DIR}
+# build flex
+ARG FLEX_VERSION=2.6.4
+RUN wget https://github.com/westes/flex/releases/download/v$FLEX_VERSION/flex-$FLEX_VERSION.tar.gz \
+    -q -O /tmp/flex-$FLEX_VERSION.tar.gz \
+    && cd /tmp/ \
+    && tar -xf flex-$FLEX_VERSION.tar.gz \
+    && cd flex-$FLEX_VERSION \
+    && ./configure --enable-shared=NO \
+    && make \
+    && make install \
+    && rm /tmp/flex-$FLEX_VERSION.tar.gz \
+    && rm -rf /tmp/flex-$FLEX_VERSION
+
+# install nodejs
+ARG NODEJS_VERSION=14.16.0
+RUN wget https://nodejs.org/dist/v$NODEJS_VERSION/node-v$NODEJS_VERSION-linux-x64.tar.gz \
+    -q -O /tmp/node-v$NODEJS_VERSION-linux-x64.tar.gz \
+    && cd /tmp/ && tar -xf node-v$NODEJS_VERSION-linux-x64.tar.gz \
+    && cp -r node-v$NODEJS_VERSION-linux-x64/* /usr/local/ \
+    && rm /tmp/node-v$NODEJS_VERSION-linux-x64.tar.gz && rm -rf node-v$NODEJS_VERSION-linux-x64
+
+
+ENV BASH_ENV=/opt/rh/devtoolset-10/enable  \
+    ENV=/opt/rh/devtoolset-10/enable  \
+    PROMPT_COMMAND=". /opt/rh/devtoolset-10/enable"
 
 # there is a repo which is included all of thirdparty
 ENV REPOSITORY_URL=https://doris-thirdparty-repo.bj.bcebos.com/thirdparty
+ENV DEFAULT_DIR /var/local
 
 # clone lastest source code, download and build third party
 COPY incubator-doris ${DEFAULT_DIR}/incubator-doris
@@ -107,5 +104,23 @@ RUN cd ${DEFAULT_DIR}/incubator-doris && /bin/bash thirdparty/build-thirdparty.s
     && mv ${DEFAULT_DIR}/incubator-doris/thirdparty/installed ${DEFAULT_DIR}/thirdparty/ \
     && rm -rf ${DEFAULT_DIR}/incubator-doris
 
+
+FROM scratch
+
+COPY --from=builder / /
+ENV JAVA_HOME="/usr/lib/jvm/java-11"
+ENV MAVEN_HOME /usr/share/maven
+
+ENV BASH_ENV=/opt/rh/devtoolset-10/enable  \
+    ENV=/opt/rh/devtoolset-10/enable  \
+    PROMPT_COMMAND=". /opt/rh/devtoolset-10/enable"
+
+ENV REPOSITORY_URL=https://doris-thirdparty-repo.bj.bcebos.com/thirdparty
+ENV DEFAULT_DIR /var/local
+
+
 ENV DORIS_THIRDPARTY /var/local/thirdparty
 WORKDIR /root
+
+CMD ["/bin/bash"]
+~
diff --git a/docker/Dockerfile b/docker/Dockerfile.gcc7
similarity index 86%
copy from docker/Dockerfile
copy to docker/Dockerfile.gcc7
index b74b0cf..26747c4 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile.gcc7
@@ -15,19 +15,12 @@
 # specific language governing permissions and limitations
 # under the License.
 
-FROM centos:centos7.5.1804
+FROM centos:centos7.5.1804 AS builder
 
 LABEL maintainer=tangxiaoqing214445
 
 ENV DEFAULT_DIR /var/local
 
-# install nodejs
-COPY ./node-v14.8.0-linux-x64.tar.xz /tmp/
-RUN tar xf /tmp/node-v14.8.0-linux-x64.tar.xz -C ${DEFAULT_DIR}/ \
-    && rm /tmp/node-v14.8.0-linux-x64.tar.xz
-
-ENV PATH ${DEFAULT_DIR}/node-v14.8.0-linux-x64/bin:$PATH
-
 ARG GCC_VERSION=7.3.0
 ARG GCC_URL=https://mirrors.ustc.edu.cn/gnu/gcc/gcc-${GCC_VERSION}
 
@@ -37,6 +30,9 @@ RUN yum install -y bzip2 wget git gcc-c++ libstdc++-static byacc flex automake l
   && yum -y clean all \
   && rm -rf /var/cache/yum \
   && mkdir -p  /var/local/gcc \
+  && curl -fsSL -o /tmp/node-v14.16.0-linux-x64.tar.xz https://nodejs.org/dist/v14.16.0/node-v14.16.0-linux-x64.tar.xz \
+  && tar xf /tmp/node-v14.16.0-linux-x64.tar.xz -C ${DEFAULT_DIR}/ \
+  && rm /tmp/node-v14.16.0-linux-x64.tar.xz
   && curl -fsSL -o /tmp/gcc.tar.gz  ${GCC_URL}/gcc-${GCC_VERSION}.tar.gz \
   && tar -xzf /tmp/gcc.tar.gz -C /var/local/gcc --strip-components=1 \
   && cd /var/local/gcc \
@@ -47,6 +43,8 @@ RUN yum install -y bzip2 wget git gcc-c++ libstdc++-static byacc flex automake l
   && rm -rf /var/local/gcc \
   && rm -f /tmp/gcc.tar.gz
 
+ENV PATH ${DEFAULT_DIR}/node-v14.16.0-linux-x64/bin:$PATH
+
 # build cmake
 ARG CMAKE_VERSION=3.12.3
 ARG CMAKE_DOWNLOAD_URL=https://cmake.org/files/v3.12/cmake-${CMAKE_VERSION}.tar.gz
@@ -61,7 +59,8 @@ RUN mkdir -p /tmp/cmake && curl -fsSL -o /tmp/cmake.tar.gz ${CMAKE_DOWNLOAD_URL}
 
 # install jdk
 COPY ./jdk.rpm ./
-RUN touch  ${DEFAULT_DIR}/install_jdk.sh \
+RUN wget --no-cookies --no-check-certificate --header "Cookie: oraclelicense=accept-securebackup-cookie" https://javadl.oracle.com/webapps/download/GetFile/1.8.0_281-b09/89d678f2be164786b292527658ca1605/linux-i586/jdk-8u281-linux-x64.rpm -O jdk.rpm \
+    && touch  ${DEFAULT_DIR}/install_jdk.sh \
     && echo '#!/bin/bash' >> ${DEFAULT_DIR}/install_jdk.sh \
     && echo 'rpm -Uvh jdk.rpm > /dev/null 2>&1' >>  ${DEFAULT_DIR}/install_jdk.sh \
     && echo 'mv /usr/java/jdk* /usr/java/jdk' >>  ${DEFAULT_DIR}/install_jdk.sh \
@@ -107,5 +106,13 @@ RUN cd ${DEFAULT_DIR}/incubator-doris && /bin/bash thirdparty/build-thirdparty.s
     && mv ${DEFAULT_DIR}/incubator-doris/thirdparty/installed ${DEFAULT_DIR}/thirdparty/ \
     && rm -rf ${DEFAULT_DIR}/incubator-doris
 
+FROM scratch
+COPY --from=builder / /
+
+ENV DEFAULT_DIR /var/local
+ENV PATH ${DEFAULT_DIR}/node-v14.8.0-linux-x64/bin:$PATH
+ENV JAVA_HOME /usr/java/jdk
+ENV MAVEN_HOME /usr/share/maven
 ENV DORIS_THIRDPARTY /var/local/thirdparty
 WORKDIR /root
+CMD ["/bin/bash"]

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org