blob: d3f6f1a22ce4988cf298980be2665f3e772807b9 [file] [log] [blame]
#!/bin/bash
# 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.
#### START ARG ####
# docker build cmd example:
# docker build -f docker/runtime/doris-compose/Dockerfile -t <your-image-name>:<version> .
# choose a base image
# doris 2.1, 3.0+, master use JDK 17
ARG JDK_IMAGE=openjdk:17-jdk-slim
# doris 2.0 use JDK 8
# build 2.0 image, example:
# docker build --build-arg JDK_IMAGE=openjdk:8u342-jdk \
# -f docker/runtime/doris-compose/Dockerfile \
# -t <your-image-name>:<version> .
#ARG JDK_IMAGE=openjdk:8u342-jdk
# user can download a doris release package, extract it, then build its image used arg `OUTPUT_PATH`
# for example:
#
# ```
# cd ~/tmp
# wget https://apache-doris-releases.oss-accelerate.aliyuncs.com/apache-doris-3.0.5-bin-x64.tar.gz
# tar xvf apache-doris-3.0.5-bin-x64.tar.gz # after extract, there will be a directory ./apache-doris-3.0.5-bin-x64/{fe, be, ms}
#
# docker build \
# --build-arg OUTPUT_PATH=./apache-doris-3.0.5-bin-x64 \
# -f ~/workspace/doris/docker/runtime/doris-compose/Dockerfile \
# -t my-doris:v3.0.5 \
# .
# ```
ARG OUTPUT_PATH=./output
#### END ARG ####
FROM ${JDK_IMAGE}
# set environment variables
ENV JACOCO_VERSION=0.8.8
RUN sed -i -e s@/deb.debian.org/@/mirrors.aliyun.com/@g -e s@/security.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list \
&& apt-get clean \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
default-mysql-client \
python \
lsof \
tzdata \
curl \
unzip \
patchelf \
jq \
procps \
util-linux \
gosu \
&& ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& dpkg-reconfigure -f noninteractive tzdata \
&& apt-get clean
RUN mkdir -p /opt/apache-doris/fdb \
&& mkdir -p /opt/apache-doris/coverage
RUN curl -f https://repo1.maven.org/maven2/org/jacoco/jacoco/${JACOCO_VERSION}/jacoco-${JACOCO_VERSION}.zip -o jacoco.zip \
&& mkdir /jacoco \
&& unzip jacoco.zip -d /jacoco
# COPY need refine ARG after FROM
ARG OUTPUT_PATH
COPY --chmod=777 ${OUTPUT_PATH} /opt/apache-doris/
# in docker, run 'chmod 755 doris_be' first time cost 1min, remove it.
RUN sed -i 's/\<chmod\>/echo/g' /opt/apache-doris/be/bin/start_be.sh
RUN if [ -d /opt/apache-doris/ms/bin ]; then \
sed -i 's/\<chmod\>/echo/g' /opt/apache-doris/ms/bin/start.sh ; \
fi