rickchengx opened a new pull request #4178:
URL: https://github.com/apache/zeppelin/pull/4178


   ### What is this PR for?
   Currently, users can build a smaller docker image of zeppelin interpreter by 
modifying the Dockerfile in `scripts/docker/zeppelin-interpreter`. But I think 
a more ideal way is that user can use a shell script to build the docker image 
(something like `docker-image-tool.sh` in Apache Spark) and specify the 
interpreters they want.
   
   Example usage:
   ```
   Usage: ./Dockerfile_gen.sh [options] [command]
   This script outputs a Dockerfile for building the zeppelin image that 
contains some specific interpreters.
   
   Options:
     -i interpreter        (Optional) A comma-separated list of interpreter 
directory names (under /path/to/zeppelin/interpreter/)
                           that need to be add into the docker image.
                           By default, it will add the spark interpreter.
     -c conda yaml file    (Optional) Specify the conda yaml file that manages 
python and R packages. By default, it will not install
                           python and R packages through conda.
     -v zeppelin version   (Optional) Specify the version of zeppelin. By 
default, the version is "0.9.0".
   
   Examples:
     - Output the Dockerfile for building the zeppelin image that contains 
spark and python interpreter.
       ./Dockerfile_gen.sh -i spark,python
   
     - Output the Dockerfile for building the zeppelin image that contains 
spark and python interpreter and specify the
       conda yaml file "python3.yaml"
       ./Dockerfile_gen.sh -i spark,python -c python3.yaml
   ```
   
   Example generated Dockerfile:
   ```
   # 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 apache/zeppelin:0.9.0 AS zeppelin-distribution
   
   FROM ubuntu:20.04
   
   LABEL maintainer="Apache Software Foundation <dev@zeppelin.apache.org>"
   
   ARG version="0.9.0"
   
   ENV VERSION="${version}" \
       ZEPPELIN_HOME="/opt/zeppelin"
   
   RUN set -ex && \
       apt-get -y update && \
       DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-8-jre-headless 
wget tini && \
       # Cleanup
       rm -rf /var/lib/apt/lists/* && \
       apt-get autoclean && \
       apt-get clean
   
   COPY --from=zeppelin-distribution /opt/zeppelin/bin ${ZEPPELIN_HOME}/bin
   COPY log4j.properties ${ZEPPELIN_HOME}/conf/
   COPY log4j_yarn_cluster.properties ${ZEPPELIN_HOME}/conf/
   
   # Copy interpreter-shaded JAR, needed for all interpreters
   COPY --from=zeppelin-distribution 
/opt/zeppelin/interpreter/zeppelin-interpreter-shaded-${VERSION}.jar 
${ZEPPELIN_HOME}/interpreter/zeppelin-interpreter-shaded-${VERSION}.jar
   
   # copy interpreter spark
   COPY --from=zeppelin-distribution /opt/zeppelin/interpreter/spark  
${ZEPPELIN_HOME}/interpreter/spark
   
   RUN mkdir -p "${ZEPPELIN_HOME}/logs" "${ZEPPELIN_HOME}/run" 
"${ZEPPELIN_HOME}/local-repo" && \
       # Allow process to edit /etc/passwd, to create a user entry for zeppelin
       chgrp root /etc/passwd && chmod ug+rw /etc/passwd && \
       # Give access to some specific folders
       chmod -R 775 "${ZEPPELIN_HOME}/logs" "${ZEPPELIN_HOME}/run" 
"${ZEPPELIN_HOME}/local-repo"
   
   
   USER 1000
   ENTRYPOINT [ "/usr/bin/tini", "--" ]
   WORKDIR ${ZEPPELIN_HOME}
   ```
   
   ### What type of PR is it?
   [Improvement]
   
   ### Todos
   * [ ] - Task
   
   ### What is the Jira issue?
   * <https://issues.apache.org/jira/browse/ZEPPELIN-5461>
   
   ### How should this be tested?
   * CI pass and manually tested
   
   ### Screenshots (if appropriate)
   
   ### Questions:
   * Does the licenses files need update? No
   * Is there breaking changes for older versions? No
   * Does this needs documentation? No
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@zeppelin.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to