diff --git a/dev/change_zeppelin_version.sh b/dev/change_zeppelin_version.sh
index c12dd814273..bbca9d71b46 100755
--- a/dev/change_zeppelin_version.sh
+++ b/dev/change_zeppelin_version.sh
@@ -58,6 +58,9 @@ sed -i '' 's/-'"${FROM_VERSION}"'.jar",/-'"${TO_VERSION}"'.jar",/g' zeppelin-exa
sed -i '' 's/"version": "'"${FROM_VERSION}"'",/"version": "'"${TO_VERSION}"'",/g' zeppelin-web/src/app/tabledata/package.json
sed -i '' 's/"version": "'"${FROM_VERSION}"'",/"version": "'"${TO_VERSION}"'",/g' zeppelin-web/src/app/visualization/package.json
+# Change version in Dockerfile
+sed -i '' 's/Z_VERSION="'"${FROM_VERSION}"'"/Z_VERSION="'"${TO_VERSION}"'"/g' scripts/docker/zeppelin/bin/Dockerfile
+
# When preparing new dev version from release tag, doesn't need to change docs version
if is_dev_version "${FROM_VERSION}" || ! is_dev_version "${TO_VERSION}"; then
# When prepare new rc for the maintenance release
diff --git a/docs/install/docker.md b/docs/install/docker.md
index c7b6f699aad..a7e85166141 100644
--- a/docs/install/docker.md
+++ b/docs/install/docker.md
@@ -19,7 +19,7 @@ limitations under the License.
-->
{% include JB/setup %}
-# Apache Zeppelin Releases Docker Images
+# Docker Image for Apache Zeppelin Releases
@@ -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 `.
-* To publish the created image use :
-`publish_release.sh `
-
-### 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:
-
-docker run --rm -it -p 7077:7077 -p 8080:8080 ${DOCKER_USERNAME}/zeppelin-release: -c bash
+docker run -p 8080:8080 --rm --name zeppelin apache/zeppelin:
```
-* 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 --rm \
+-v $PWD/logs:/logs \
+-v $PWD/notebook:/notebook \
-e ZEPPELIN_LOG_DIR='/logs' \
--d ${DOCKER_USERNAME}/zeppelin-release: \
-/usr/local/zeppelin/bin/zeppelin.sh
+-e ZEPPELIN_NOTEBOOK_DIR='/notebook' \
+--name zeppelin apache/zeppelin: # e.g '0.7.2'
```
+### Building dockerfile locally
-* Zeppelin will run at `http://localhost:8080`.
+```
+cd $ZEPPELIN_HOME
+cd scripts/docker/zeppelin/bin
+
+docker build -t my-zeppelin:my-tag ./
+```
diff --git a/scripts/docker/zeppelin-base/Dockerfile b/scripts/docker/zeppelin-base/Dockerfile
deleted file mode 100644
index 3084d3e1a9c..00000000000
--- 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
-
-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", "--"]
diff --git a/scripts/docker/zeppelin/bin/Dockerfile b/scripts/docker/zeppelin/bin/Dockerfile
new file mode 100644
index 00000000000..8808b8a41ee
--- /dev/null
+++ b/scripts/docker/zeppelin/bin/Dockerfile
@@ -0,0 +1,106 @@
+# 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
+
+# `Z_VERSION` will be updated by `dev/change_zeppelin_version.sh`
+ENV Z_VERSION="0.7.2-SNAPSHOT"
+ENV LOG_TAG="[ZEPPELIN_${Z_VERSION}]:" \
+ Z_HOME="/zeppelin" \
+ 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')"
+
+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
+
+ENTRYPOINT [ "/usr/bin/tini", "--" ]
+WORKDIR ${Z_HOME}
+CMD ["bin/zeppelin.sh"]
\ No newline at end of file