From ac06f3a0d9d8f5563890cf370c4f22aa8d7e3eca Mon Sep 17 00:00:00 2001 From: mahmoudelgamal Date: Sat, 24 Sep 2016 14:42:57 +0200 Subject: [PATCH 01/10] Make docker image for zeppelin release --- dev/create_release.sh | 22 ++++++++++++++++++---- dev/publish_release.sh | 9 ++++++++- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/dev/create_release.sh b/dev/create_release.sh index 272713baa6b..b1ce218c46a 100755 --- a/dev/create_release.sh +++ b/dev/create_release.sh @@ -33,14 +33,23 @@ if [[ $# -ne 2 ]]; then usage fi -if [[ -z "${GPG_PASSPHRASE}" ]]; then - echo "You need GPG_PASSPHRASE variable set" - exit 1 -fi +for var in GPG_PASSPHRASE DOCKER_USERNAME; do + if [[ -z "${!var}" ]]; then + echo "You need ${var} variable set" + exit 1 + fi +done RELEASE_VERSION="$1" GIT_TAG="$2" +function build_docker_image() { + echo "FROM ${DOCKER_USERNAME}/zeppelin-base:latest + RUN mkdir /usr/local/zeppelin/ + ADD zeppelin-${RELEASE_VERSION}-bin-${BIN_RELEASE_NAME} /usr/local/zeppelin/" > "Dockerfile" + docker build -t ${DOCKER_USERNAME}/zeppelin-release:"${RELEASE_VERSION}" . +} + function make_source_package() { # create source package cd ${WORKING_DIR} @@ -97,6 +106,11 @@ function make_binary_release() { mv "zeppelin-${RELEASE_VERSION}-bin-${BIN_RELEASE_NAME}.tgz.md5" "${WORKING_DIR}/" mv "zeppelin-${RELEASE_VERSION}-bin-${BIN_RELEASE_NAME}.tgz.sha512" "${WORKING_DIR}/" + # build docker image if binary_release_name 'all' + if [[ $1 = "all" ]]; then + build_docker_image + fi + # clean up build dir rm -rf "${WORKING_DIR}/zeppelin-${RELEASE_VERSION}-bin-${BIN_RELEASE_NAME}" } diff --git a/dev/publish_release.sh b/dev/publish_release.sh index 3a0a0f52f42..f41f2641be1 100755 --- a/dev/publish_release.sh +++ b/dev/publish_release.sh @@ -30,7 +30,7 @@ if [[ $# -ne 2 ]]; then usage fi -for var in GPG_PASSPHRASE ASF_USERID ASF_PASSWORD; do +for var in GPG_PASSPHRASE ASF_USERID ASF_PASSWORD DOCKER_USERNAME DOCKER_PASSWORD DOCKER_EMAIL; do if [[ -z "${!var}" ]]; then echo "You need ${var} variable set" exit 1 @@ -67,6 +67,12 @@ function curl_error() { fi } +function publish_to_dockerhub() { + # publish image + docker login --username="${DOCKER_USERNAME}" --password="${DOCKER_PASSWORD}" --email="${DOCKER_EMAIL}" + docker push ${DOCKER_USERNAME}/zeppelin-release:"${RELEASE_VERSION}" +} + function publish_to_maven() { cd "${WORKING_DIR}/zeppelin" @@ -153,5 +159,6 @@ function publish_to_maven() { } git_clone +publish_to_dockerhub publish_to_maven cleanup From 231a414c3ca26bca3a6cbdb85ec0636213beeebf Mon Sep 17 00:00:00 2001 From: mahmoudelgamal Date: Tue, 18 Oct 2016 12:13:01 +0200 Subject: [PATCH 02/10] Add zeppelin-base image --- dev/create_release.sh | 6 ++++++ dev/publish_release.sh | 4 +++- scripts/docker/zeppelin-base/Dockerfile | 16 ++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 scripts/docker/zeppelin-base/Dockerfile diff --git a/dev/create_release.sh b/dev/create_release.sh index b1ce218c46a..6fa50fcbce0 100755 --- a/dev/create_release.sh +++ b/dev/create_release.sh @@ -43,7 +43,12 @@ done RELEASE_VERSION="$1" GIT_TAG="$2" +function build_docker_base() { + # build base image + docker build -t ${DOCKER_USERNAME}/zeppelin-base:latest "${WORKING_DIR}/zeppelin/scripts/docker/zeppelin-base" +} function build_docker_image() { + # build release image echo "FROM ${DOCKER_USERNAME}/zeppelin-base:latest RUN mkdir /usr/local/zeppelin/ ADD zeppelin-${RELEASE_VERSION}-bin-${BIN_RELEASE_NAME} /usr/local/zeppelin/" > "Dockerfile" @@ -117,6 +122,7 @@ function make_binary_release() { git_clone make_source_package +build_docker_base make_binary_release all "-Pspark-2.0 -Phadoop-2.4 -Pyarn -Ppyspark -Psparkr -Pr -Pscala-2.11" make_binary_release netinst "-Pspark-2.0 -Phadoop-2.4 -Pyarn -Ppyspark -Psparkr -Pr -Pscala-2.11 -pl !alluxio,!angular,!cassandra,!elasticsearch,!file,!flink,!hbase,!ignite,!jdbc,!kylin,!lens,!livy,!markdown,!postgresql,!python,!shell,!bigquery" diff --git a/dev/publish_release.sh b/dev/publish_release.sh index f41f2641be1..adc9a91bac5 100755 --- a/dev/publish_release.sh +++ b/dev/publish_release.sh @@ -68,9 +68,11 @@ function curl_error() { } function publish_to_dockerhub() { - # publish image + # publish images docker login --username="${DOCKER_USERNAME}" --password="${DOCKER_PASSWORD}" --email="${DOCKER_EMAIL}" + docker push ${DOCKER_USERNAME}/zeppelin-base:latest docker push ${DOCKER_USERNAME}/zeppelin-release:"${RELEASE_VERSION}" + } function publish_to_maven() { diff --git a/scripts/docker/zeppelin-base/Dockerfile b/scripts/docker/zeppelin-base/Dockerfile new file mode 100644 index 00000000000..37adc80c85d --- /dev/null +++ b/scripts/docker/zeppelin-base/Dockerfile @@ -0,0 +1,16 @@ +FROM alpine:3.3 +MAINTAINER Mahmoud Elgamal + +RUN apk add --update bash curl openjdk7-jre wget ca-certificates openssl && rm -rf /var/cache/apk/* + +RUN wget -O /usr/local/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.1.3/dumb-init_1.1.3_amd64 +RUN chmod +x /usr/local/bin/dumb-init + +# set jave environment variable +ENV JAVA_HOME /usr/lib/jvm/java-1.7-openjdk +ENV PATH $PATH:$JAVA_HOME/bin + +# ports for zeppelin +EXPOSE 8080 8081 + +ENTRYPOINT ["/usr/local/bin/dumb-init"] From e6423098786f52c2600745c3b60a15d3938300c0 Mon Sep 17 00:00:00 2001 From: mahmoudelgamal Date: Sat, 22 Oct 2016 01:18:12 +0200 Subject: [PATCH 03/10] Add documentation and some modifications --- dev/create_release.sh | 2 +- docs/install/docker.md | 57 +++++++++++++++++++++++++ scripts/docker/zeppelin-base/Dockerfile | 18 +++++++- 3 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 docs/install/docker.md diff --git a/dev/create_release.sh b/dev/create_release.sh index 6fa50fcbce0..51745653253 100755 --- a/dev/create_release.sh +++ b/dev/create_release.sh @@ -45,7 +45,7 @@ GIT_TAG="$2" function build_docker_base() { # build base image - docker build -t ${DOCKER_USERNAME}/zeppelin-base:latest "${WORKING_DIR}/zeppelin/scripts/docker/zeppelin-base" + docker build -t ${DOCKER_USERNAME}/zeppelin-base:latest "${BASEDIR}/../scripts/docker/zeppelin-base" } function build_docker_image() { # build release image diff --git a/docs/install/docker.md b/docs/install/docker.md new file mode 100644 index 00000000000..6c50b9bcac1 --- /dev/null +++ b/docs/install/docker.md @@ -0,0 +1,57 @@ +--- +layout: page +title: "Apache Zeppelin Releases Docker Images" +description: "This document contains instructions about making docker containers for Zeppelin. It mainly provides guidance into how to create, publish and run docker images for zeppelin releases." +group: install +--- + +{% include JB/setup %} + +# Apache Zeppelin Releases Docker Images + +
+ +## Overview +This document contains instructions about making docker containers for Zeppelin. It mainly provides guidance into how to create, publish and run docker images for zeppelin releases. + +## Quick Start +### Installing Docker +You need to [install docker](https://docs.docker.com/engine/installation/) on your machine. + +### Creating and Publishing Zeppelin docker image +* In order to be able to create and/or publish an image, you need to set the **DockerHub** credentials `DOCKER_USERNAME, DOCKER_PASSWORD, DOCKER_EMAIL` variables as environment variables. + +* To create an image for some release use : +`create_release.sh `. +* To publish the created image use : +`publish_release.sh ` + +### Running a Zeppelin docker image + +* To start Zeppelin, you need to pull the zeppelin release image: +``` +docker pull ${DOCKER_USERNAME}/zeppelin-release: +docker run --rm -p 8080:8080 -p 8081:8081 ${DOCKER_USERNAME}/zeppelin-release: bash +``` +* Then a docker container will start with a Zeppelin release on path : +`/usr/local/zeppelin/` + +* Run zeppelin inside docker: +``` +/usr/local/zeppelin/bin/zeppelin-daemon start +``` + +* Zeppelin will run at `http://localhost:8080`. + diff --git a/scripts/docker/zeppelin-base/Dockerfile b/scripts/docker/zeppelin-base/Dockerfile index 37adc80c85d..2608bd7d2d9 100644 --- a/scripts/docker/zeppelin-base/Dockerfile +++ b/scripts/docker/zeppelin-base/Dockerfile @@ -1,5 +1,21 @@ +# 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 alpine:3.3 -MAINTAINER Mahmoud Elgamal +MAINTAINER Apache Software Foundation RUN apk add --update bash curl openjdk7-jre wget ca-certificates openssl && rm -rf /var/cache/apk/* From e731cb4515c06b04b54c0cffa6dfc39115df9456 Mon Sep 17 00:00:00 2001 From: mahmoudelgamal Date: Sun, 23 Oct 2016 23:59:33 +0200 Subject: [PATCH 04/10] Add java-cacerts to zeppelin-base --- docs/install/docker.md | 2 +- scripts/docker/zeppelin-base/Dockerfile | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/install/docker.md b/docs/install/docker.md index 6c50b9bcac1..9c25e8d4233 100644 --- a/docs/install/docker.md +++ b/docs/install/docker.md @@ -43,7 +43,7 @@ You need to [install docker](https://docs.docker.com/engine/installation/) on yo * To start Zeppelin, you need to pull the zeppelin release image: ``` docker pull ${DOCKER_USERNAME}/zeppelin-release: -docker run --rm -p 8080:8080 -p 8081:8081 ${DOCKER_USERNAME}/zeppelin-release: bash +docker run --rm -it -p 8080:8080 -p 8081:8081 ${DOCKER_USERNAME}/zeppelin-release: bash ``` * Then a docker container will start with a Zeppelin release on path : `/usr/local/zeppelin/` diff --git a/scripts/docker/zeppelin-base/Dockerfile b/scripts/docker/zeppelin-base/Dockerfile index 2608bd7d2d9..d5774d54bec 100644 --- a/scripts/docker/zeppelin-base/Dockerfile +++ b/scripts/docker/zeppelin-base/Dockerfile @@ -17,7 +17,10 @@ FROM alpine:3.3 MAINTAINER Apache Software Foundation -RUN apk add --update bash curl openjdk7-jre wget ca-certificates openssl && rm -rf /var/cache/apk/* +RUN apk add --update bash curl openjdk7-jre wget ca-certificates java-cacerts openssl \ + && rm /usr/lib/jvm/java-1.7-openjdk/jre/lib/security/cacerts \ + && ln -s /etc/ssl/certs/java/cacerts /usr/lib/jvm/java-1.7-openjdk/jre/lib/security/cacerts \ + && rm -rf /var/cache/apk/* RUN wget -O /usr/local/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.1.3/dumb-init_1.1.3_amd64 RUN chmod +x /usr/local/bin/dumb-init From e1d4b7733523e7242b0d539301ac6a6c674e177b Mon Sep 17 00:00:00 2001 From: mahmoudelgamal Date: Thu, 3 Nov 2016 19:35:58 +0200 Subject: [PATCH 05/10] add R and python to zeppelin-base --- docs/install/docker.md | 9 ++++++++- scripts/docker/zeppelin-base/Dockerfile | 11 +++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/docs/install/docker.md b/docs/install/docker.md index 9c25e8d4233..7df7344b64a 100644 --- a/docs/install/docker.md +++ b/docs/install/docker.md @@ -43,7 +43,8 @@ You need to [install docker](https://docs.docker.com/engine/installation/) on yo * To start Zeppelin, you need to pull the zeppelin release image: ``` docker pull ${DOCKER_USERNAME}/zeppelin-release: -docker run --rm -it -p 8080:8080 -p 8081:8081 ${DOCKER_USERNAME}/zeppelin-release: bash + +docker run --rm -it -p 7077:7077 -p 8081:8081 ${DOCKER_USERNAME}/zeppelin-release: bash ``` * Then a docker container will start with a Zeppelin release on path : `/usr/local/zeppelin/` @@ -53,5 +54,11 @@ docker run --rm -it -p 8080:8080 -p 8081:8081 ${DOCKER_USERNAME}/zeppelin-releas /usr/local/zeppelin/bin/zeppelin-daemon start ``` +* To Run Zeppelin in daemon mode +``` +docker run -d -p 7077:7077 -p 8081:8081 ${DOCKER_USERNAME}/zeppelin-release: \ + bash -c "/usr/local/zeppelin/bin/zeppelin-daemon.sh restart && while true; do sleep 3; done" +``` + * Zeppelin will run at `http://localhost:8080`. diff --git a/scripts/docker/zeppelin-base/Dockerfile b/scripts/docker/zeppelin-base/Dockerfile index d5774d54bec..c2b6697c547 100644 --- a/scripts/docker/zeppelin-base/Dockerfile +++ b/scripts/docker/zeppelin-base/Dockerfile @@ -17,9 +17,16 @@ FROM alpine:3.3 MAINTAINER Apache Software Foundation -RUN apk add --update bash curl openjdk7-jre wget ca-certificates java-cacerts openssl \ +RUN apk add --update bash curl openjdk7-jre wget ca-certificates python build-base make gcc g++ java-cacerts openssl \ && rm /usr/lib/jvm/java-1.7-openjdk/jre/lib/security/cacerts \ && ln -s /etc/ssl/certs/java/cacerts /usr/lib/jvm/java-1.7-openjdk/jre/lib/security/cacerts \ + && curl --silent \ + --location https://github.com/sgerrand/alpine-pkg-R/releases/download/3.3.1-r0/R-3.3.1-r0.apk --output /var/cache/apk/R-3.3.1-r0.apk \ + && apk add --update --allow-untrusted /var/cache/apk/R-3.3.1-r0.apk \ + && curl --silent \ + --location https://github.com/sgerrand/alpine-pkg-R/releases/download/3.3.1-r0/R-dev-3.3.1-r0.apk --output /var/cache/apk/R-dev-3.3.1-r0.apk \ + && apk add --update --allow-untrusted /var/cache/apk/R-dev-3.3.1-r0.apk \ + && R -e "install.packages('knitr', repos = 'http://cran.us.r-project.org')" \ && rm -rf /var/cache/apk/* RUN wget -O /usr/local/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.1.3/dumb-init_1.1.3_amd64 @@ -30,6 +37,6 @@ ENV JAVA_HOME /usr/lib/jvm/java-1.7-openjdk ENV PATH $PATH:$JAVA_HOME/bin # ports for zeppelin -EXPOSE 8080 8081 +EXPOSE 8080 7077 ENTRYPOINT ["/usr/local/bin/dumb-init"] From fd2397057dfc263c1c2a8723935e09706abf1f99 Mon Sep 17 00:00:00 2001 From: mahmoudelgamal Date: Sat, 5 Nov 2016 12:53:20 +0200 Subject: [PATCH 06/10] remove bash erorr message. --- docs/install/docker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/install/docker.md b/docs/install/docker.md index 7df7344b64a..c41274da2da 100644 --- a/docs/install/docker.md +++ b/docs/install/docker.md @@ -44,7 +44,7 @@ You need to [install docker](https://docs.docker.com/engine/installation/) on yo ``` docker pull ${DOCKER_USERNAME}/zeppelin-release: -docker run --rm -it -p 7077:7077 -p 8081:8081 ${DOCKER_USERNAME}/zeppelin-release: bash +docker run --rm -it -p 7077:7077 -p 8081:8081 ${DOCKER_USERNAME}/zeppelin-release: -c bash ``` * Then a docker container will start with a Zeppelin release on path : `/usr/local/zeppelin/` From d2c744e3ce732fc1df529e6ee956331345cc61d1 Mon Sep 17 00:00:00 2001 From: mahmoudelgamal Date: Sat, 12 Nov 2016 23:29:57 +0200 Subject: [PATCH 07/10] add scala to zeppelin-base --- scripts/docker/zeppelin-base/Dockerfile | 41 +++++++++++++++---------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/scripts/docker/zeppelin-base/Dockerfile b/scripts/docker/zeppelin-base/Dockerfile index c2b6697c547..f7ec27a3bf1 100644 --- a/scripts/docker/zeppelin-base/Dockerfile +++ b/scripts/docker/zeppelin-base/Dockerfile @@ -14,28 +14,37 @@ # limitations under the License. # -FROM alpine:3.3 +FROM alpine:3.4 MAINTAINER Apache Software Foundation -RUN apk add --update bash curl openjdk7-jre wget ca-certificates python build-base make gcc g++ java-cacerts openssl \ - && rm /usr/lib/jvm/java-1.7-openjdk/jre/lib/security/cacerts \ - && ln -s /etc/ssl/certs/java/cacerts /usr/lib/jvm/java-1.7-openjdk/jre/lib/security/cacerts \ - && curl --silent \ - --location https://github.com/sgerrand/alpine-pkg-R/releases/download/3.3.1-r0/R-3.3.1-r0.apk --output /var/cache/apk/R-3.3.1-r0.apk \ - && apk add --update --allow-untrusted /var/cache/apk/R-3.3.1-r0.apk \ - && curl --silent \ - --location https://github.com/sgerrand/alpine-pkg-R/releases/download/3.3.1-r0/R-dev-3.3.1-r0.apk --output /var/cache/apk/R-dev-3.3.1-r0.apk \ - && apk add --update --allow-untrusted /var/cache/apk/R-dev-3.3.1-r0.apk \ - && R -e "install.packages('knitr', repos = 'http://cran.us.r-project.org')" \ - && rm -rf /var/cache/apk/* +ENV SCALA_VERSION="2.11.8" +ENV SCALA_HOME="/usr/share/scala" +ENV JAVA_HOME /usr/lib/jvm/java-1.7-openjdk +ENV PATH $PATH:$JAVA_HOME/bin + +RUN apk add --update bash curl openjdk7-jre wget ca-certificates python build-base make gcc g++ java-cacerts openssl && \ + rm /usr/lib/jvm/java-1.7-openjdk/jre/lib/security/cacerts && \ + ln -s /etc/ssl/certs/java/cacerts /usr/lib/jvm/java-1.7-openjdk/jre/lib/security/cacerts && \ + cd "/tmp" && \ + wget "https://downloads.typesafe.com/scala/${SCALA_VERSION}/scala-${SCALA_VERSION}.tgz" && \ + tar xzf "scala-${SCALA_VERSION}.tgz" && \ + mkdir "${SCALA_HOME}" && \ + rm "/tmp/scala-${SCALA_VERSION}/bin/"*.bat && \ + mv "/tmp/scala-${SCALA_VERSION}/bin" "/tmp/scala-${SCALA_VERSION}/lib" "${SCALA_HOME}" && \ + ln -s "${SCALA_HOME}/bin/"* "/usr/bin/" && \ + rm -rf "/tmp/"* && \ + curl --silent \ + --location https://github.com/sgerrand/alpine-pkg-R/releases/download/3.3.1-r0/R-3.3.1-r0.apk --output /var/cache/apk/R-3.3.1-r0.apk && \ + apk add --update --allow-untrusted /var/cache/apk/R-3.3.1-r0.apk && \ + curl --silent \ + --location https://github.com/sgerrand/alpine-pkg-R/releases/download/3.3.1-r0/R-dev-3.3.1-r0.apk --output /var/cache/apk/R-dev-3.3.1-r0.apk && \ + apk add --update --allow-untrusted /var/cache/apk/R-dev-3.3.1-r0.apk && \ + R -e "install.packages('knitr', repos = 'http://cran.us.r-project.org')" && \ + rm -rf /var/cache/apk/* RUN wget -O /usr/local/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.1.3/dumb-init_1.1.3_amd64 RUN chmod +x /usr/local/bin/dumb-init -# set jave environment variable -ENV JAVA_HOME /usr/lib/jvm/java-1.7-openjdk -ENV PATH $PATH:$JAVA_HOME/bin - # ports for zeppelin EXPOSE 8080 7077 From 1f093d47d0d26d68191cce6518e278ad45a110dd Mon Sep 17 00:00:00 2001 From: mahmoudelgamal Date: Fri, 18 Nov 2016 11:24:39 +0200 Subject: [PATCH 08/10] Add script start-zeppelin to zeppelin-base --- dev/create_release.sh | 2 +- docs/install/docker.md | 16 +++-- scripts/docker/zeppelin-base/Dockerfile | 3 + .../docker/zeppelin-base/start-zeppelin.sh | 68 +++++++++++++++++++ 4 files changed, 83 insertions(+), 6 deletions(-) create mode 100644 scripts/docker/zeppelin-base/start-zeppelin.sh diff --git a/dev/create_release.sh b/dev/create_release.sh index 51745653253..ece58638319 100755 --- a/dev/create_release.sh +++ b/dev/create_release.sh @@ -120,9 +120,9 @@ function make_binary_release() { rm -rf "${WORKING_DIR}/zeppelin-${RELEASE_VERSION}-bin-${BIN_RELEASE_NAME}" } +build_docker_base git_clone make_source_package -build_docker_base make_binary_release all "-Pspark-2.0 -Phadoop-2.4 -Pyarn -Ppyspark -Psparkr -Pr -Pscala-2.11" make_binary_release netinst "-Pspark-2.0 -Phadoop-2.4 -Pyarn -Ppyspark -Psparkr -Pr -Pscala-2.11 -pl !alluxio,!angular,!cassandra,!elasticsearch,!file,!flink,!hbase,!ignite,!jdbc,!kylin,!lens,!livy,!markdown,!postgresql,!python,!shell,!bigquery" diff --git a/docs/install/docker.md b/docs/install/docker.md index c41274da2da..8320f476622 100644 --- a/docs/install/docker.md +++ b/docs/install/docker.md @@ -44,21 +44,27 @@ You need to [install docker](https://docs.docker.com/engine/installation/) on yo ``` docker pull ${DOCKER_USERNAME}/zeppelin-release: -docker run --rm -it -p 7077:7077 -p 8081:8081 ${DOCKER_USERNAME}/zeppelin-release: -c bash +docker run --rm -it -p 7077:7077 -p 8080:8080 ${DOCKER_USERNAME}/zeppelin-release: -c bash ``` * Then a docker container will start with a Zeppelin release on path : `/usr/local/zeppelin/` * Run zeppelin inside docker: ``` -/usr/local/zeppelin/bin/zeppelin-daemon start +start-zeppelin.sh start ``` -* To Run Zeppelin in daemon mode +* To Run Zeppelin in daemon mode +Mounting logs and notebooks zeppelin to folders on your host machine + ``` -docker run -d -p 7077:7077 -p 8081:8081 ${DOCKER_USERNAME}/zeppelin-release: \ - bash -c "/usr/local/zeppelin/bin/zeppelin-daemon.sh restart && while true; do sleep 3; done" +docker run -p 7077:7077 -p 8080:8080 --privileged=true -v $PWD/logs:/logs -v $PWD/notebook:/notebook \ +-e ZEPPELIN_NOTEBOOK_DIR='/notebook' \ +-e ZEPPELIN_LOG_DIR='/logs' \ +-d ${DOCKER_USERNAME}/zeppelin-release: \ + bash -c "start-zeppelin.sh restart && while true; do sleep 3; done" ``` + * Zeppelin will run at `http://localhost:8080`. diff --git a/scripts/docker/zeppelin-base/Dockerfile b/scripts/docker/zeppelin-base/Dockerfile index f7ec27a3bf1..02d3386e3e3 100644 --- a/scripts/docker/zeppelin-base/Dockerfile +++ b/scripts/docker/zeppelin-base/Dockerfile @@ -45,6 +45,9 @@ RUN apk add --update bash curl openjdk7-jre wget ca-certificates python build-ba RUN wget -O /usr/local/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.1.3/dumb-init_1.1.3_amd64 RUN chmod +x /usr/local/bin/dumb-init +ADD start-zeppelin.sh /usr/bin/start-zeppelin.sh +RUN chmod a+x /usr/bin/start-zeppelin.sh + # ports for zeppelin EXPOSE 8080 7077 diff --git a/scripts/docker/zeppelin-base/start-zeppelin.sh b/scripts/docker/zeppelin-base/start-zeppelin.sh new file mode 100644 index 00000000000..52446075b67 --- /dev/null +++ b/scripts/docker/zeppelin-base/start-zeppelin.sh @@ -0,0 +1,68 @@ + +#!/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. +# +# + +USAGE="-e Usage: start-zepppelin.sh {start|stop|restart}\n\t" + +if [[ -z "$ZEPPELIN_MEM" ]]; then + export ZEPPELIN_MEM="-Xmx1024m -XX:MaxPermSize=512m" +fi +if [[ -z "$ZEPPELIN_INTP_MEM" ]]; then + export ZEPPELIN_INTP_MEM=$ZEPPELIN_MEM +fi +if [[ -z "$ZEPPELIN_JAVA_OPTS" ]]; then + # By default N/A + export ZEPPELIN_JAVA_OPTS="" +fi +if [[ -z "$ZEPPELIN_NOTEBOOK_DIR" ]]; then + export ZEPPELIN_NOTEBOOK_DIR="/usr/local/zeppelin/notebook" +fi +if [[ -z "$ZEPPELIN_LOG_DIR" ]]; then + export ZEPPELIN_LOG_DIR="/usr/local/zeppelin/logs" +fi +if [[ -z "$ZEPPELIN_WEBSOCKET_MAX_TEXT_MESSAGE_SIZE" ]]; then + export ZEPPELIN_WEBSOCKET_MAX_TEXT_MESSAGE_SIZE=1024000 +fi + +export ZEPPELIN_PORT=8080 +export ZEPPELIN_HOME="/usr/local/zeppelin" + +function start(){ + ${ZEPPELIN_HOME}/bin/zeppelin-daemon.sh start +} + +function stop(){ + ${ZEPPELIN_HOME}/bin/zeppelin-daemon.sh stop +} + +case "${1}" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + start + ;; + *) + echo ${USAGE} +esac From b64c68008ab39ab929cda36adfe1ad78636a9d47 Mon Sep 17 00:00:00 2001 From: mahmoudelgamal Date: Thu, 1 Dec 2016 17:34:23 +0200 Subject: [PATCH 09/10] Remove gcc and g++ for decreasing the size --- scripts/docker/zeppelin-base/Dockerfile | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/scripts/docker/zeppelin-base/Dockerfile b/scripts/docker/zeppelin-base/Dockerfile index 02d3386e3e3..fdf74234135 100644 --- a/scripts/docker/zeppelin-base/Dockerfile +++ b/scripts/docker/zeppelin-base/Dockerfile @@ -17,22 +17,12 @@ FROM alpine:3.4 MAINTAINER Apache Software Foundation -ENV SCALA_VERSION="2.11.8" -ENV SCALA_HOME="/usr/share/scala" ENV JAVA_HOME /usr/lib/jvm/java-1.7-openjdk ENV PATH $PATH:$JAVA_HOME/bin RUN apk add --update bash curl openjdk7-jre wget ca-certificates python build-base make gcc g++ java-cacerts openssl && \ rm /usr/lib/jvm/java-1.7-openjdk/jre/lib/security/cacerts && \ ln -s /etc/ssl/certs/java/cacerts /usr/lib/jvm/java-1.7-openjdk/jre/lib/security/cacerts && \ - cd "/tmp" && \ - wget "https://downloads.typesafe.com/scala/${SCALA_VERSION}/scala-${SCALA_VERSION}.tgz" && \ - tar xzf "scala-${SCALA_VERSION}.tgz" && \ - mkdir "${SCALA_HOME}" && \ - rm "/tmp/scala-${SCALA_VERSION}/bin/"*.bat && \ - mv "/tmp/scala-${SCALA_VERSION}/bin" "/tmp/scala-${SCALA_VERSION}/lib" "${SCALA_HOME}" && \ - ln -s "${SCALA_HOME}/bin/"* "/usr/bin/" && \ - rm -rf "/tmp/"* && \ curl --silent \ --location https://github.com/sgerrand/alpine-pkg-R/releases/download/3.3.1-r0/R-3.3.1-r0.apk --output /var/cache/apk/R-3.3.1-r0.apk && \ apk add --update --allow-untrusted /var/cache/apk/R-3.3.1-r0.apk && \ @@ -40,6 +30,7 @@ RUN apk add --update bash curl openjdk7-jre wget ca-certificates python build-ba --location https://github.com/sgerrand/alpine-pkg-R/releases/download/3.3.1-r0/R-dev-3.3.1-r0.apk --output /var/cache/apk/R-dev-3.3.1-r0.apk && \ apk add --update --allow-untrusted /var/cache/apk/R-dev-3.3.1-r0.apk && \ R -e "install.packages('knitr', repos = 'http://cran.us.r-project.org')" && \ + apk del curl build-base make gcc g++ && \ rm -rf /var/cache/apk/* RUN wget -O /usr/local/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.1.3/dumb-init_1.1.3_amd64 @@ -51,4 +42,4 @@ RUN chmod a+x /usr/bin/start-zeppelin.sh # ports for zeppelin EXPOSE 8080 7077 -ENTRYPOINT ["/usr/local/bin/dumb-init"] +ENTRYPOINT ["/usr/local/bin/dumb-init", "--"] From d48ecefeeb87693c5289ae168786451409015d1b Mon Sep 17 00:00:00 2001 From: 1ambda <1amb4a@gmail.com> Date: Tue, 13 Dec 2016 13:23:21 +0900 Subject: [PATCH 10/10] fix: Remove start-zeppelin.sh --- docs/install/docker.md | 4 +- scripts/docker/zeppelin-base/Dockerfile | 3 - .../docker/zeppelin-base/start-zeppelin.sh | 68 ------------------- 3 files changed, 2 insertions(+), 73 deletions(-) delete mode 100644 scripts/docker/zeppelin-base/start-zeppelin.sh diff --git a/docs/install/docker.md b/docs/install/docker.md index 8320f476622..c7b6f699aad 100644 --- a/docs/install/docker.md +++ b/docs/install/docker.md @@ -51,7 +51,7 @@ docker run --rm -it -p 7077:7077 -p 8080:8080 ${DOCKER_USERNAME}/zeppelin-releas * Run zeppelin inside docker: ``` -start-zeppelin.sh start +/usr/local/zeppelin/bin/zeppelin.sh ``` * To Run Zeppelin in daemon mode @@ -62,7 +62,7 @@ docker run -p 7077:7077 -p 8080:8080 --privileged=true -v $PWD/logs:/logs -v $PW -e ZEPPELIN_NOTEBOOK_DIR='/notebook' \ -e ZEPPELIN_LOG_DIR='/logs' \ -d ${DOCKER_USERNAME}/zeppelin-release: \ - bash -c "start-zeppelin.sh restart && while true; do sleep 3; done" +/usr/local/zeppelin/bin/zeppelin.sh ``` diff --git a/scripts/docker/zeppelin-base/Dockerfile b/scripts/docker/zeppelin-base/Dockerfile index fdf74234135..3084d3e1a9c 100644 --- a/scripts/docker/zeppelin-base/Dockerfile +++ b/scripts/docker/zeppelin-base/Dockerfile @@ -36,9 +36,6 @@ RUN apk add --update bash curl openjdk7-jre wget ca-certificates python build-ba RUN wget -O /usr/local/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.1.3/dumb-init_1.1.3_amd64 RUN chmod +x /usr/local/bin/dumb-init -ADD start-zeppelin.sh /usr/bin/start-zeppelin.sh -RUN chmod a+x /usr/bin/start-zeppelin.sh - # ports for zeppelin EXPOSE 8080 7077 diff --git a/scripts/docker/zeppelin-base/start-zeppelin.sh b/scripts/docker/zeppelin-base/start-zeppelin.sh deleted file mode 100644 index 52446075b67..00000000000 --- a/scripts/docker/zeppelin-base/start-zeppelin.sh +++ /dev/null @@ -1,68 +0,0 @@ - -#!/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. -# -# - -USAGE="-e Usage: start-zepppelin.sh {start|stop|restart}\n\t" - -if [[ -z "$ZEPPELIN_MEM" ]]; then - export ZEPPELIN_MEM="-Xmx1024m -XX:MaxPermSize=512m" -fi -if [[ -z "$ZEPPELIN_INTP_MEM" ]]; then - export ZEPPELIN_INTP_MEM=$ZEPPELIN_MEM -fi -if [[ -z "$ZEPPELIN_JAVA_OPTS" ]]; then - # By default N/A - export ZEPPELIN_JAVA_OPTS="" -fi -if [[ -z "$ZEPPELIN_NOTEBOOK_DIR" ]]; then - export ZEPPELIN_NOTEBOOK_DIR="/usr/local/zeppelin/notebook" -fi -if [[ -z "$ZEPPELIN_LOG_DIR" ]]; then - export ZEPPELIN_LOG_DIR="/usr/local/zeppelin/logs" -fi -if [[ -z "$ZEPPELIN_WEBSOCKET_MAX_TEXT_MESSAGE_SIZE" ]]; then - export ZEPPELIN_WEBSOCKET_MAX_TEXT_MESSAGE_SIZE=1024000 -fi - -export ZEPPELIN_PORT=8080 -export ZEPPELIN_HOME="/usr/local/zeppelin" - -function start(){ - ${ZEPPELIN_HOME}/bin/zeppelin-daemon.sh start -} - -function stop(){ - ${ZEPPELIN_HOME}/bin/zeppelin-daemon.sh stop -} - -case "${1}" in - start) - start - ;; - stop) - stop - ;; - restart) - stop - start - ;; - *) - echo ${USAGE} -esac