You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by mo...@apache.org on 2017/04/28 09:56:18 UTC

zeppelin git commit: [ZEPPELIN-1711] Create `Dockerfile`s for released bin

Repository: zeppelin
Updated Branches:
  refs/heads/master bba0a7b47 -> 5c3291c71


[ZEPPELIN-1711] Create `Dockerfile`s for released bin

### What is this PR for?

Created `Dockerfile` for released bin

- based on **Ubuntu:16.04 (LTS)** for desktop usage
- **JDK 8**
- **R** with basic packages
- **Python 2** with basic packages
- **miniconda2** for `%python.conda`

### Details

We already discussed about using alpine image in https://github.com/apache/zeppelin/pull/1761.

- However, it's not designed for desktop usage
- Doesn't have some official packages (R, ...)
- Not familiar to users for desktop OS

That the reason why ubuntu is used in base image

```
zeppelin                  base                b3818f9ae4b1        11 hours ago        1.67 GB
zeppelin                  0.6.2               c0a4d8556f92        7 hours ago         2.29 GB
zeppelin                  0.7.0               c4a5ad0d04bd        8 hours ago         2.5 GB
zeppelin                  0.7.1               54173b77743b        7 hours ago         2.49 GB
```

### What type of PR is it?
[Feature]

### Todos
* [x] - base image
* [x] - script for creating bin images
* [x] - bin image template

### What is the Jira issue?

[ZEPPELIN-1711](https://issues.apache.org/jira/browse/ZEPPELIN-1711)

### How should this be tested?

1. build base image `cd scripts/docker/zeppelin/base; docker build -t zeppelin:base ./`
2. build bin image `cd scripts/docker/zeppelin/0.7.1; docker build -t zeppelin:0.7.1 ./`
3. execute docker images

```
docker run -p 8080:8080 --rm --name zeppelin zeppelin:0.7.1
```

since it takes time to build, you can use already [published docker images](https://hub.docker.com/r/1ambda/docker-zeppelin/)

```
docker run -p 8080:8080 --rm --name zeppelin 1ambda/docker-zeppelin:0.7.1
```

4. should be able to run spark, python and R tutorials

### Screenshots (if appropriate)

NO

### Questions:
* Does the licenses files need update? - NO
* Is there breaking changes for older versions? - NO
* Does this needs documentation? - YES, updated

Author: 1ambda <1a...@gmail.com>

Closes #2264 from 1ambda/ZEPPELIN-1711/bin-dockerfile and squashes the following commits:

69a0b1f [1ambda] docs: Update docker.md
ced897f [1ambda] fix: DON'T remove /tmp
1f6da76 [1ambda] feat: Dockerfiles for 060, 070, 071
0fc3f75 [1ambda] feat: Add template for bin image
5cba56e [1ambda] feat: Use ubuntu for base image


Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo
Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/5c3291c7
Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/5c3291c7
Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/5c3291c7

Branch: refs/heads/master
Commit: 5c3291c71a8c3986f962fa3205577be109db9165
Parents: bba0a7b
Author: 1ambda <1a...@gmail.com>
Authored: Thu Apr 20 00:10:57 2017 +0900
Committer: Lee moon soo <mo...@apache.org>
Committed: Fri Apr 28 02:56:04 2017 -0700

----------------------------------------------------------------------
 docs/install/docker.md                          | 43 ++++------
 scripts/docker/zeppelin-base/Dockerfile         | 42 ---------
 scripts/docker/zeppelin/0.6.2/Dockerfile        | 37 ++++++++
 scripts/docker/zeppelin/0.7.0/Dockerfile        | 37 ++++++++
 scripts/docker/zeppelin/0.7.1/Dockerfile        | 37 ++++++++
 scripts/docker/zeppelin/base/Dockerfile         | 90 ++++++++++++++++++++
 scripts/docker/zeppelin/bin-template/Dockerfile | 37 ++++++++
 scripts/docker/zeppelin/create-dockerfile.sh    | 51 +++++++++++
 8 files changed, 306 insertions(+), 68 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5c3291c7/docs/install/docker.md
----------------------------------------------------------------------
diff --git a/docs/install/docker.md b/docs/install/docker.md
index c7b6f69..40be416 100644
--- a/docs/install/docker.md
+++ b/docs/install/docker.md
@@ -27,44 +27,35 @@ limitations under the License.
 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 <release-version> <git-tag>`.
-* To publish the created image use :
-`publish_release.sh <release-version> <git-tag>`
-
-### Running a Zeppelin  docker image 
+### Running docker image
 
-* To start Zeppelin, you need to pull the zeppelin release image: 
 ```
-docker pull ${DOCKER_USERNAME}/zeppelin-release:<release-version>
-
-docker run --rm -it -p 7077:7077 -p 8080:8080 ${DOCKER_USERNAME}/zeppelin-release:<release-version> -c bash
+docker run -p 8080:8080 --name zeppelin zeppelin:<release-version> 
 ```
-* Then a docker container will start with a Zeppelin release on path :
-`/usr/local/zeppelin/`
 
-* Run zeppelin inside docker:
-```
-/usr/local/zeppelin/bin/zeppelin.sh
-```
+* Zeppelin will run at `http://localhost:8080`.
 
-* To Run Zeppelin in daemon mode
-Mounting logs and notebooks zeppelin to folders on your host machine
+If you want to specify `logs` and `notebook` dir, 
 
 ```
-docker run -p 7077:7077 -p 8080:8080 --privileged=true -v $PWD/logs:/logs -v $PWD/notebook:/notebook \
--e ZEPPELIN_NOTEBOOK_DIR='/notebook' \
+docker run -p 8080:8080 \
+-v $PWD/logs:/logs \
+-v $PWD/notebook:/notebook \
 -e ZEPPELIN_LOG_DIR='/logs' \
--d ${DOCKER_USERNAME}/zeppelin-release:<release-version> \
-/usr/local/zeppelin/bin/zeppelin.sh
+-e ZEPPELIN_NOTEBOOK_DIR='/notebook' \
+--name zeppelin zeppelin:<release-version> # e.g '0.7.1'
 ```
 
+### Building dockerfile locally
 
-* Zeppelin will run at `http://localhost:8080`.
+```
+cd $ZEPPELIN_HOME
+cd scripts/docker/zeppelin
+
+./create-dockerfile.sh <release-version>   # e.g '0.7.1'
+```
 

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5c3291c7/scripts/docker/zeppelin-base/Dockerfile
----------------------------------------------------------------------
diff --git a/scripts/docker/zeppelin-base/Dockerfile b/scripts/docker/zeppelin-base/Dockerfile
deleted file mode 100644
index 3084d3e..0000000
--- a/scripts/docker/zeppelin-base/Dockerfile
+++ /dev/null
@@ -1,42 +0,0 @@
-# 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.4
-MAINTAINER Apache Software Foundation <de...@zeppelin.apache.org>
-
-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 && \
-    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')" && \
-    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
-RUN chmod +x /usr/local/bin/dumb-init
-
-# ports for zeppelin
-EXPOSE 8080 7077
-
-ENTRYPOINT ["/usr/local/bin/dumb-init", "--"]

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5c3291c7/scripts/docker/zeppelin/0.6.2/Dockerfile
----------------------------------------------------------------------
diff --git a/scripts/docker/zeppelin/0.6.2/Dockerfile b/scripts/docker/zeppelin/0.6.2/Dockerfile
new file mode 100644
index 0000000..26c3d59
--- /dev/null
+++ b/scripts/docker/zeppelin/0.6.2/Dockerfile
@@ -0,0 +1,37 @@
+# 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 zeppelin:base
+MAINTAINER Apache Software Foundation <de...@zeppelin.apache.org>
+
+ENV Z_VERSION="0.6.2"
+ENV LOG_TAG="[ZEPPELIN_${Z_VERSION}]:" \
+    Z_HOME="/zeppelin"
+
+RUN echo "$LOG_TAG Download Zeppelin binary" && \
+    wget -O /tmp/zeppelin-${Z_VERSION}-bin-all.tgz http://archive.apache.org/dist/zeppelin/zeppelin-${Z_VERSION}/zeppelin-${Z_VERSION}-bin-all.tgz && \
+    tar -zxvf /tmp/zeppelin-${Z_VERSION}-bin-all.tgz && \
+    rm -rf /tmp/zeppelin-${Z_VERSION}-bin-all.tgz && \
+    mv /zeppelin-${Z_VERSION}-bin-all ${Z_HOME}
+
+RUN echo "$LOG_TAG Cleanup" && \
+    apt-get autoclean && \
+    apt-get clean
+
+EXPOSE 8080
+
+WORKDIR ${Z_HOME}
+CMD ["bin/zeppelin.sh"]
+

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5c3291c7/scripts/docker/zeppelin/0.7.0/Dockerfile
----------------------------------------------------------------------
diff --git a/scripts/docker/zeppelin/0.7.0/Dockerfile b/scripts/docker/zeppelin/0.7.0/Dockerfile
new file mode 100644
index 0000000..89b49f8
--- /dev/null
+++ b/scripts/docker/zeppelin/0.7.0/Dockerfile
@@ -0,0 +1,37 @@
+# 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 zeppelin:base
+MAINTAINER Apache Software Foundation <de...@zeppelin.apache.org>
+
+ENV Z_VERSION="0.7.0"
+ENV LOG_TAG="[ZEPPELIN_${Z_VERSION}]:" \
+    Z_HOME="/zeppelin"
+
+RUN echo "$LOG_TAG Download Zeppelin binary" && \
+    wget -O /tmp/zeppelin-${Z_VERSION}-bin-all.tgz http://archive.apache.org/dist/zeppelin/zeppelin-${Z_VERSION}/zeppelin-${Z_VERSION}-bin-all.tgz && \
+    tar -zxvf /tmp/zeppelin-${Z_VERSION}-bin-all.tgz && \
+    rm -rf /zeppelin-${Z_VERSION}-bin-all.tgz && \
+    mv /zeppelin-${Z_VERSION}-bin-all ${Z_HOME}
+
+RUN echo "$LOG_TAG Cleanup" && \
+    apt-get autoclean && \
+    apt-get clean
+
+EXPOSE 8080
+
+WORKDIR ${Z_HOME}
+CMD ["bin/zeppelin.sh"]
+

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5c3291c7/scripts/docker/zeppelin/0.7.1/Dockerfile
----------------------------------------------------------------------
diff --git a/scripts/docker/zeppelin/0.7.1/Dockerfile b/scripts/docker/zeppelin/0.7.1/Dockerfile
new file mode 100644
index 0000000..989efa4
--- /dev/null
+++ b/scripts/docker/zeppelin/0.7.1/Dockerfile
@@ -0,0 +1,37 @@
+# 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 zeppelin:base
+MAINTAINER Apache Software Foundation <de...@zeppelin.apache.org>
+
+ENV Z_VERSION="0.7.1"
+ENV LOG_TAG="[ZEPPELIN_${Z_VERSION}]:" \
+    Z_HOME="/zeppelin"
+
+RUN echo "$LOG_TAG Download Zeppelin binary" && \
+    wget -O /tmp/zeppelin-${Z_VERSION}-bin-all.tgz http://archive.apache.org/dist/zeppelin/zeppelin-${Z_VERSION}/zeppelin-${Z_VERSION}-bin-all.tgz && \
+    tar -zxvf /tmp/zeppelin-${Z_VERSION}-bin-all.tgz && \
+    rm -rf /tmp/zeppelin-${Z_VERSION}-bin-all.tgz && \
+    mv /zeppelin-${Z_VERSION}-bin-all ${Z_HOME}
+
+RUN echo "$LOG_TAG Cleanup" && \
+    apt-get autoclean && \
+    apt-get clean
+
+EXPOSE 8080
+
+WORKDIR ${Z_HOME}
+CMD ["bin/zeppelin.sh"]
+

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5c3291c7/scripts/docker/zeppelin/base/Dockerfile
----------------------------------------------------------------------
diff --git a/scripts/docker/zeppelin/base/Dockerfile b/scripts/docker/zeppelin/base/Dockerfile
new file mode 100644
index 0000000..8b6d2f9
--- /dev/null
+++ b/scripts/docker/zeppelin/base/Dockerfile
@@ -0,0 +1,90 @@
+# 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 ubuntu:16.04
+MAINTAINER Apache Software Foundation <de...@zeppelin.apache.org>
+
+ENV LOG_TAG="[ZEPPELIN_BASE]:" \
+    LANG=en_US.UTF-8 \
+    LC_ALL=en_US.UTF-8
+
+RUN echo "$LOG_TAG update and install basic packages" && \
+    apt-get -y update && \
+    apt-get install -y locales && \
+    locale-gen $LANG && \
+    apt-get install -y software-properties-common && \
+    apt -y autoclean && \
+    apt -y dist-upgrade && \
+    apt-get install -y build-essential
+
+RUN echo "$LOG_TAG install tini related packages" && \
+    apt-get install -y curl grep sed dpkg && \
+    TINI_VERSION=`curl https://github.com/krallin/tini/releases/latest | grep -o "/v.*\"" | sed 's:^..\(.*\).$:\1:'` && \
+    curl -L "https://github.com/krallin/tini/releases/download/v${TINI_VERSION}/tini_${TINI_VERSION}.deb" > tini.deb && \
+    dpkg -i tini.deb && \
+    rm tini.deb
+
+ENV JAVA_HOME=/usr/lib/jvm/java-8-oracle
+RUN echo "$LOG_TAG Install java8" && \
+    echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
+    add-apt-repository -y ppa:webupd8team/java && \
+    apt-get -y update && \
+    apt-get install -y oracle-java8-installer && \
+    rm -rf /var/lib/apt/lists/* && \
+    rm -rf /var/cache/oracle-jdk8-installer
+
+# should install conda first before numpy, matploylib since pip and python will be installed by conda
+RUN echo "$LOG_TAG Install miniconda2 related packages" && \
+    apt-get -y update && \
+    apt-get install -y bzip2 ca-certificates \
+    libglib2.0-0 libxext6 libsm6 libxrender1 \
+    git mercurial subversion && \
+    echo 'export PATH=/opt/conda/bin:$PATH' > /etc/profile.d/conda.sh && \
+    wget --quiet https://repo.continuum.io/miniconda/Miniconda2-4.3.11-Linux-x86_64.sh -O ~/miniconda.sh && \
+    /bin/bash ~/miniconda.sh -b -p /opt/conda && \
+    rm ~/miniconda.sh
+ENV PATH /opt/conda/bin:$PATH
+
+RUN echo "$LOG_TAG Install python related packages" && \
+    apt-get -y update && \
+    apt-get install -y python-dev python-pip && \
+    apt-get install -y gfortran && \
+    # numerical/algebra packages
+    apt-get install -y libblas-dev libatlas-dev liblapack-dev && \
+    # font, image for matplotlib
+    apt-get install -y libpng-dev libfreetype6-dev libxft-dev && \
+    # for tkinter
+    apt-get install -y python-tk libxml2-dev libxslt-dev zlib1g-dev && \
+    pip install numpy && \
+    pip install matplotlib
+
+RUN echo "$LOG_TAG Install R related packages" && \
+    echo "deb http://cran.rstudio.com/bin/linux/ubuntu xenial/" | tee -a /etc/apt/sources.list && \
+    gpg --keyserver keyserver.ubuntu.com --recv-key E084DAB9 && \
+    gpg -a --export E084DAB9 | apt-key add - && \
+    apt-get -y update && \
+    apt-get -y install r-base r-base-dev && \
+    R -e "install.packages('knitr', repos='http://cran.us.r-project.org')" && \
+    R -e "install.packages('ggplot2', repos='http://cran.us.r-project.org')" && \
+    R -e "install.packages('googleVis', repos='http://cran.us.r-project.org')" && \
+    R -e "install.packages('data.table', repos='http://cran.us.r-project.org')" && \
+    # for devtools, Rcpp
+    apt-get -y install libcurl4-gnutls-dev libssl-dev && \
+    R -e "install.packages('devtools', repos='http://cran.us.r-project.org')" && \
+    R -e "install.packages('Rcpp', repos='http://cran.us.r-project.org')" && \
+    Rscript -e "library('devtools'); library('Rcpp'); install_github('ramnathv/rCharts')"
+
+ENTRYPOINT [ "/usr/bin/tini", "--" ]
+CMD [ "/bin/bash" ]

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5c3291c7/scripts/docker/zeppelin/bin-template/Dockerfile
----------------------------------------------------------------------
diff --git a/scripts/docker/zeppelin/bin-template/Dockerfile b/scripts/docker/zeppelin/bin-template/Dockerfile
new file mode 100644
index 0000000..95b3586
--- /dev/null
+++ b/scripts/docker/zeppelin/bin-template/Dockerfile
@@ -0,0 +1,37 @@
+# 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 zeppelin:base
+MAINTAINER Apache Software Foundation <de...@zeppelin.apache.org>
+
+ENV Z_VERSION="0.0.0"
+ENV LOG_TAG="[ZEPPELIN_${Z_VERSION}]:" \
+    Z_HOME="/zeppelin"
+
+RUN echo "$LOG_TAG Download Zeppelin binary" && \
+    wget -O /tmp/zeppelin-${Z_VERSION}-bin-all.tgz http://archive.apache.org/dist/zeppelin/zeppelin-${Z_VERSION}/zeppelin-${Z_VERSION}-bin-all.tgz && \
+    tar -zxvf /tmp/zeppelin-${Z_VERSION}-bin-all.tgz && \
+    rm -rf /tmp/zeppelin-${Z_VERSION}-bin-all.tgz && \
+    mv /zeppelin-${Z_VERSION}-bin-all ${Z_HOME}
+
+RUN echo "$LOG_TAG Cleanup" && \
+    apt-get autoclean && \
+    apt-get clean
+
+EXPOSE 8080
+
+WORKDIR ${Z_HOME}
+CMD ["bin/zeppelin.sh"]
+

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/5c3291c7/scripts/docker/zeppelin/create-dockerfile.sh
----------------------------------------------------------------------
diff --git a/scripts/docker/zeppelin/create-dockerfile.sh b/scripts/docker/zeppelin/create-dockerfile.sh
new file mode 100755
index 0000000..8e1e06e
--- /dev/null
+++ b/scripts/docker/zeppelin/create-dockerfile.sh
@@ -0,0 +1,51 @@
+#!/usr/bin/env 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.
+#
+
+if [ $# -lt 1 ];
+then
+    echo "USAGE: $0 version"
+    echo "* version: 0.6.2 (released zeppelin binary version)"
+    exit 1
+fi
+
+TAG="[CREATE-DOCKERFILE]"
+VERSION=$1
+
+BASE_DIR="./base/"
+TEMPLATE_DOCKERFILE="./bin-template/Dockerfile"
+
+if [ ! -d "$BASE_DIR" ]; then
+    echo "${TAG} Base Directory doesn't exist: ${BASE_DIR}"
+    exit 1
+fi
+
+TARGET_DIR="${VERSION}"
+BASE_IMAGE_TAG="base"
+
+if [ ! -d "$TARGET_DIR" ]; then
+    echo "${TAG} Creating Directory: ${TARGET_DIR}"
+    mkdir -p ${TARGET_DIR}
+
+    echo "${TAG} Copying File: ${TARGET_DIR}/Dockerfile"
+    cp ${TEMPLATE_DOCKERFILE} ${TARGET_DIR}/Dockerfile
+
+    echo "${TAG} Set Version: ${VERSION}"
+    sed -i '' -e "s/Z_VERSION=\"0.0.0\"/Z_VERSION=\"${VERSION}\"/g" ${TARGET_DIR}/Dockerfile
+else
+    echo "${TAG} Directory already exists: ${TARGET_DIR}"
+fi