Repository: zeppelin
Updated Branches:
  refs/heads/branch-0.7 7382c1c62 -> e3071d66f


[ZEPPELIN-2492] Use single Dockerfile for each tag (branch-0.7)

### What is this PR for?

**This PR is created for branch-0.7**
**https://github.com/apache/zeppelin/pull/2318 was already merged into master**

Use single `Dockerfile` for each release since [apache infra uses tag 
pushes](https://issues.apache.org/jira/browse/INFRA-12781) to build an image.

- https://issues.apache.org/jira/browse/INFRA-12781

After release process finishes, dockerhub will build using the pushed tag.

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

### What is the Jira issue?

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

### How should this be tested?

1. `./dev/change_zeppelin_version.sh 0.8.0-SNAPSHOT 0.7.1`
2. Check that version is properly set: `vi 
scrtips/docker/zeppelin/bin/Dockerfile`
3. Build docker image `cd scripts/docker/zeppelin/bin; docker build -t 
zeppelin:0.7.1 ./`
4. Run the image: `docker run -p 8080:8080  --rm --name zeppelin zeppelin:0.7.1`

### Screenshots (if appropriate)

NONE

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

Author: 1ambda <[email protected]>

Closes #2388 from 
1ambda/ZEPPELIN-2492/use-single-dockerfile-for-each-tag-branch07 and squashes 
the following commits:

64b3fe06 [1ambda] docs: Update docker.md
14710963 [1ambda] feat: Add dockerfile for tag push


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

Branch: refs/heads/branch-0.7
Commit: e3071d66f0acdfe62ad62c794e53e14956ab2a63
Parents: 7382c1c
Author: 1ambda <[email protected]>
Authored: Fri Jun 2 15:24:38 2017 +0900
Committer: Jongyoul Lee <[email protected]>
Committed: Mon Jun 5 02:07:00 2017 +0900

----------------------------------------------------------------------
 dev/change_zeppelin_version.sh          |   3 +
 docs/install/docker.md                  |  45 +++++-------
 scripts/docker/zeppelin-base/Dockerfile |  42 -----------
 scripts/docker/zeppelin/bin/Dockerfile  | 106 +++++++++++++++++++++++++++
 4 files changed, 127 insertions(+), 69 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zeppelin/blob/e3071d66/dev/change_zeppelin_version.sh
----------------------------------------------------------------------
diff --git a/dev/change_zeppelin_version.sh b/dev/change_zeppelin_version.sh
index c12dd81..bbca9d7 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

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/e3071d66/docs/install/docker.md
----------------------------------------------------------------------
diff --git a/docs/install/docker.md b/docs/install/docker.md
index c7b6f69..a7e8516 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 
 
 <div id="toc"></div>
 
@@ -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 --rm --name zeppelin apache/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 --rm \
+-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 apache/zeppelin:<release-version> # 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 ./
+```
 

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/e3071d66/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 <[email protected]>
-
-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/e3071d66/scripts/docker/zeppelin/bin/Dockerfile
----------------------------------------------------------------------
diff --git a/scripts/docker/zeppelin/bin/Dockerfile 
b/scripts/docker/zeppelin/bin/Dockerfile
new file mode 100644
index 0000000..8808b8a
--- /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 <[email protected]>
+
+# `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

Reply via email to