Files
doris/docker/Dockerfile
EmmyMiao87 6bef41633c Add DORIS_THIRDPARTY env in docker image (#539)
* Add param of specified thirdparty path
1. The thirdparth path can be specify on build.sh: ./build.sh --thirdparty /specified/path/to/thirdparty
2. If there are only thirdparty param of build.sh, it will build both fe and be
3. Add unit test of routine load stmt
4. Remove source code in docker image

* Add DORIS_THIRDPARTY env in docker image
1. Set DORIS_THIRDPARTY env in docker image. The build.sh will use /var/local/thirdparty instead of /source/code/thirdparty
2. remove --thirdparty param of build.sh

* Change image workdir to /root
2019-01-17 14:19:13 +08:00

116 lines
6.2 KiB
Docker

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
FROM centos:centos7.5.1804
MAINTAINER tangxiaoqing214445
ENV DEFAULT_DIR /var/local
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 \
&& 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
# 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 --prefix=/usr/local \
&& make -j$[$(nproc)/4+1] \
&& make install \
&& rm -rf /tmp/cmake.tar.gz \
&& rm -rf /tmp/cmake
# install jdk
RUN touch ${DEFAULT_DIR}/install_jdk.sh \
&& echo '#!/bin/bash' >> ${DEFAULT_DIR}/install_jdk.sh \
&& echo 'JAVA_VERSION="8"' >> ${DEFAULT_DIR}/install_jdk.sh \
&& echo 'URL=https://www.oracle.com' >> ${DEFAULT_DIR}/install_jdk.sh \
&& echo 'DOWNLOAD_URL1=${URL}/technetwork/java/javase/downloads/index.html' >> ${DEFAULT_DIR}/install_jdk.sh \
&& echo 'DOWNLOAD_URL2=$(curl -s $DOWNLOAD_URL1 | egrep -o "\/technetwork\/java/\javase\/downloads\/jdk${JAVA_VERSION}-downloads-.*\.html" | head -1)' >> ${DEFAULT_DIR}/install_jdk.sh \
&& echo 'DOWNLOAD_URL3="$(echo ${URL}${DOWNLOAD_URL2}|awk -F\" {"print $1"})"' >> ${DEFAULT_DIR}/install_jdk.sh \
&& echo 'DOWNLOAD_URL4=$(curl -s "$DOWNLOAD_URL3" | egrep -o "https\:\/\/download.oracle\.com\/otn-pub\/java\/jdk\/[7-8]u[0-9]+\-(.*)+\/jdk-[7-8]u[0-9]+(.*)linux-x64.rpm"|tail -n1)' >> ${DEFAULT_DIR}/install_jdk.sh \
&& echo 'wget -q --no-cookies --no-check-certificate --header "Cookie: oraclelicense=accept-securebackup-cookie" $DOWNLOAD_URL4 -O jdk.rpm > /dev/null 2>&1' >> ${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
# install maven 3.6.0
ARG MAVEN_VERSION=3.6.0
ARG SHA=fae9c12b570c3ba18116a4e26ea524b29f7279c17cbaadc3326ca72927368924d9131d11b9e851b8dc9162228b6fdea955446be41207a5cfc61283dd8a561d2f
ARG BASE_URL=https://apache.osuosl.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 ${BASE_URL}/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
&& 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
ENV MAVEN_HOME /usr/share/maven
# build environment
WORKDIR ${DEFAULT_DIR}
# download third party, you should download latest third party if you build the latest code
ARG DORIS_THRIDPARTY_URL=http://doris-opensource.bj.bcebos.com/doris-thirdparty-20181102.tar.gz?authorization=bce-auth-v1/069fc2786e464e63a5f1183824ddb522/2018-11-02T09:27:57Z/-1/host/b30621ca2be77596cec9477f6cfb3608b681206d73084338d1b2f1204a3e3848
# clone source code and build third party
RUN git clone https://github.com/apache/incubator-doris.git \
&& mkdir -p ${DEFAULT_DIR}/incubator-doris/thirdparty/src ${DEFAULT_DIR}/doris-thirdparty \
&& curl -fsSL -o ${DEFAULT_DIR}/doris-thirdparty.tar.gz ${DORIS_THRIDPARTY_URL} \
&& tar -zxf ${DEFAULT_DIR}/doris-thirdparty.tar.gz -C ${DEFAULT_DIR}/doris-thirdparty --strip-components=1 \
&& mv ${DEFAULT_DIR}/doris-thirdparty/* ${DEFAULT_DIR}/incubator-doris/thirdparty/src/ \
&& cd ${DEFAULT_DIR}/incubator-doris && /bin/bash thirdparty/build-thirdparty.sh \
&& rm -rf ${DEFAULT_DIR}/incubator-doris/thirdparty/src \
&& rm -rf ${DEFAULT_DIR}/doris-thirdparty.tar.gz \
&& rm -rf ${DEFAULT_DIR}/doris-thirdparty \
&& mkdir -p ${DEFAULT_DIR}/thirdparty \
&& mv ${DEFAULT_DIR}/incubator-doris/thirdparty/installed ${DEFAULT_DIR}/thirdparty/ \
&& rm -rf ${DEFAULT_DIR}/incubator-doris
ENV DORIS_THIRDPARTY /var/local/thirdparty
WORKDIR /root