From 6a3d12b76211b2ee6ba71d950f93ad23378ed119 Mon Sep 17 00:00:00 2001 From: Duo Zhang Date: Tue, 13 Dec 2022 23:59:27 +0800 Subject: [PATCH] HBASE-27459 Improve our hbase_docker to be able to build and start standalone clusters other than master branch (#4861) Signed-off-by: Yulin Niu (cherry picked from commit d78d40404c1f8fb2327e14f4dee3f7fef4483fff) --- dev-support/hbase_docker/Dockerfile | 23 ++++++++++++----------- dev-support/hbase_docker/README.md | 16 ++++++++-------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/dev-support/hbase_docker/Dockerfile b/dev-support/hbase_docker/Dockerfile index afcd1c24584..1651a52fc5b 100644 --- a/dev-support/hbase_docker/Dockerfile +++ b/dev-support/hbase_docker/Dockerfile @@ -14,15 +14,15 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM ubuntu:18.04 AS BASE_IMAGE +FROM ubuntu:22.04 AS BASE_IMAGE SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN DEBIAN_FRONTEND=noninteractive apt-get -qq update && \ DEBIAN_FRONTEND=noninteractive apt-get -qq install --no-install-recommends -y \ - ca-certificates=20180409 \ - curl='7.58.0-*' \ - git='1:2.17.1-*' \ - locales='2.27-*' \ + ca-certificates=20211016 \ + curl='7.81.0-*' \ + git='1:2.34.1-*' \ + locales='2.35-*' \ && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* \ @@ -31,16 +31,16 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get -qq update && \ ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8 FROM BASE_IMAGE AS MAVEN_DOWNLOAD_IMAGE -ENV MAVEN_VERSION='3.6.3' +ENV MAVEN_VERSION='3.8.6' ENV MAVEN_URL "https://archive.apache.org/dist/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz" -ENV MAVEN_SHA512 'c35a1803a6e70a126e80b2b3ae33eed961f83ed74d18fcd16909b2d44d7dada3203f1ffe726c17ef8dcca2dcaa9fca676987befeadc9b9f759967a8cb77181c0' +ENV MAVEN_SHA512 'f790857f3b1f90ae8d16281f902c689e4f136ebe584aba45e4b1fa66c80cba826d3e0e52fdd04ed44b4c66f6d3fe3584a057c26dfcac544a60b301e6d0f91c26' SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN curl --location --fail --silent --show-error --output /tmp/maven.tar.gz "${MAVEN_URL}" && \ echo "${MAVEN_SHA512} */tmp/maven.tar.gz" | sha512sum -c - FROM BASE_IMAGE AS OPENJDK8_DOWNLOAD_IMAGE -ENV OPENJDK8_URL 'https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u345-b01/OpenJDK8U-jdk_x64_linux_hotspot_8u345b01.tar.gz' -ENV OPENJDK8_SHA256 'ed6c9db3719895584fb1fd69fc79c29240977675f26631911c5a1dbce07b7d58' +ENV OPENJDK8_URL 'https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u352-b08/OpenJDK8U-jdk_x64_linux_hotspot_8u352b08.tar.gz' +ENV OPENJDK8_SHA256 '1633bd7590cb1cd72f5a1378ae8294451028b274d798e2a4ac672059a2f00fee' SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN curl --location --fail --silent --show-error --output /tmp/adoptopenjdk8.tar.gz "${OPENJDK8_URL}" && \ echo "${OPENJDK8_SHA256} */tmp/adoptopenjdk8.tar.gz" | sha256sum -c - @@ -74,9 +74,10 @@ ENV PATH "${JAVA_HOME}/bin:${MAVEN_HOME}/bin:${PATH}" # Pull down HBase and build it into /root/hbase-bin. WORKDIR /root -RUN git clone https://gitbox.apache.org/repos/asf/hbase.git -b master \ +ARG BRANCH_OR_TAG=master +RUN git clone --depth 1 -b ${BRANCH_OR_TAG} https://github.com/apache/hbase.git \ && \ - mvn clean install -DskipTests assembly:single -f ./hbase/pom.xml \ + mvn -T1C clean install -DskipTests assembly:single -f ./hbase/pom.xml \ && \ mkdir -p hbase-bin \ && \ diff --git a/dev-support/hbase_docker/README.md b/dev-support/hbase_docker/README.md index 1750e809cc7..d98f7ada98b 100644 --- a/dev-support/hbase_docker/README.md +++ b/dev-support/hbase_docker/README.md @@ -22,20 +22,20 @@ under the License. ## Overview The Dockerfile in this folder can be used to build a Docker image running -the latest HBase master branch in standalone mode. It does this by setting -up necessary dependencies, checking out the master branch of HBase from -GitHub, and then building HBase. By default, this image will start the HMaster -and launch the HBase shell when run. +a specific HBase branch or tag(default to master) in standalone mode. It +does this by setting up necessary dependencies, checking out the specific +branch or tag of HBase from GitHub, and then building HBase. By default, +this image will start the HMaster and launch the HBase shell when run. ## Usage 1. Ensure that you have a recent version of Docker installed from [docker.io](http://www.docker.io). 1. Set this folder as your working directory. -1. Type `docker build -t hbase_docker .` to build a Docker image called **hbase_docker**. - This may take 10 minutes or more the first time you run the command since it will - create a Maven repository inside the image as well as checkout the master branch - of HBase. +1. Type `docker build -t hbase_docker --build-arg BRANCH_OR_TAG=.` + to build a Docker image called **hbase_docker**. This may take 10 minutes + or more the first time you run the command since it will create a Maven + repository inside the image as well as checkout the master branch of HBase. 1. When this completes successfully, you can run `docker run -it hbase_docker` to access an HBase shell running inside of a container created from the **hbase_docker** image. Alternatively, you can type `docker run -it hbase_docker