kyuubi/docker/Dockerfile
Fu Chen c83c38b350 [KYUUBI #954] Refactor Dockerfile
<!--
Thanks for sending a pull request!

Here are some tips for you:
  1. If this is your first time, please read our contributor guidelines: https://kyuubi.readthedocs.io/en/latest/community/contributions.html
  2. If the PR is related to an issue in https://github.com/apache/incubator-kyuubi/issues, add '[KYUUBI #XXXX]' in your PR title, e.g., '[KYUUBI #XXXX] Your PR title ...'.
  3. If the PR is unfinished, add '[WIP]' in your PR title, e.g., '[WIP][KYUUBI #XXXX] Your PR title ...'.
-->

### _Why are the changes needed?_
<!--
Please clarify why the changes are needed. For instance,
  1. If you add a feature, you can talk about the use case of it.
  2. If you fix a bug, you can clarify why it is a bug.
-->

1. As the binary distributions contain all things that we want, we don't need a pre-build spark as a docker base image, use java as the base image instead.

2. Build kyuubi from source code.

### _How was this patch tested?_
- [ ] Add some test cases that check the changes thoroughly including negative and positive cases if possible

- [ ] Add screenshots for manual tests if appropriate

- [ ] [Run test](https://kyuubi.readthedocs.io/en/latest/develop_tools/testing.html#running-tests) locally before make a pull request

Closes #955 from cfmcgrady/kyuubi-954.

Closes #954

c1c4ed31 [Fu Chen] only compile module kyuubi-compile/kyuubi-integration-tests
af96c7df [Fu Chen] update master.yaml
4c395c22 [Fu Chen] sleep for debug GA
770eef1f [Fu Chen] add local docker registry
749db9c4 [Fu Chen] build docker image
feb86b01 [Fu Chen] fix Dockerfile arg bug
0a599749 [Fu Chen] add .dockerignore
49dc6e31 [Fu Chen] review
dd1d73ce [Fu Chen] refactor Dockerfile

Authored-by: Fu Chen <cfmcgrady@gmail.com>
Signed-off-by: ulysses-you <ulyssesyou18@gmail.com>
2021-08-20 09:24:38 +08:00

70 lines
2.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.
#
# Usage:
# Run the docker command below
# docker build --build-arg MVN_ARG="-Pspark-3.1,spark-hadoop-3.2" -f docker/Dockerfile -t apache/kyuubi:tagname .
# Options:
# -f this docker file
# -t the target repo and tag name
# more options can be found with -h
# declare the BASE_IMAGE argument in the first line. for more detail see: https://github.com/moby/moby/issues/38379
ARG BASE_IMAGE=openjdk:8-jdk
FROM maven:3.6-jdk-8 as builder
ARG MVN_ARG
ADD . /workspace/kyuubi
WORKDIR /workspace/kyuubi
RUN ./build/dist ${MVN_ARG} && \
mv /workspace/kyuubi/dist /opt/kyuubi && \
# Removing stuff saves time because docker creates a temporary layer
rm -rf ~/.m2 && \
rm -rf /workspace/kyuubi
FROM ${BASE_IMAGE}
ARG kyuubi_uid=10009
USER root
ENV KYUUBI_HOME /opt/kyuubi
ENV KYUUBI_LOG_DIR ${KYUUBI_HOME}/logs
ENV KYUUBI_PID_DIR ${KYUUBI_HOME}/pid
ENV KYUUBI_WORK_DIR_ROOT ${KYUUBI_HOME}/work
COPY --from=builder /opt/kyuubi ${KYUUBI_HOME}
RUN set -ex && \
apt-get update && \
DEBIAN_FRONTEND=noninteractive \
apt install -y bash tini libc6 libpam-modules krb5-user libnss3 procps && \
useradd -u ${kyuubi_uid} -g root kyuubi && \
mkdir -p ${KYUUBI_HOME} ${KYUUBI_LOG_DIR} ${KYUUBI_PID_DIR} ${KYUUBI_WORK_DIR_ROOT} && \
chmod ug+rw -R ${KYUUBI_HOME} && \
chmod a+rwx -R ${KYUUBI_WORK_DIR_ROOT} && \
rm -rf /var/cache/apt/*
WORKDIR ${KYUUBI_HOME}
CMD [ "./bin/kyuubi", "run" ]
USER ${kyuubi_uid}