adding a patch file to make Dockerfile.ppc64le more maintainable and updating the Makefile to make use of the patch file

This commit is contained in:
Ilsiyar Gaynutdinov
2016-12-07 22:42:20 +03:00
parent d55d59521f
commit c26954939a
3 changed files with 143 additions and 50 deletions

View File

@@ -8,6 +8,11 @@ SHELL:=bash
OWNER:=jupyter
# need to list these manually because there's a dependency tree
ARCH:=$(shell uname -m)
ifeq ($(ARCH),ppc64le)
ALL_STACKS:=base-notebook
else
ALL_STACKS:=base-notebook \
minimal-notebook \
r-notebook \
@@ -16,6 +21,7 @@ ALL_STACKS:=base-notebook \
datascience-notebook \
pyspark-notebook \
all-spark-notebook
endif
ALL_IMAGES:=$(ALL_STACKS)
@@ -31,12 +37,22 @@ help:
@echo
@grep -E '^[a-zA-Z0-9_%/-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
arch_patch/%: ## apply hardware architecture specific patches to the Dockerfile
if [ -e ./$(notdir $@)/Dockerfile.orig ]; then \
cp -f ./$(notdir $@)/Dockerfile.orig ./$(notdir $@)/Dockerfile;\
else\
cp -f ./$(notdir $@)/Dockerfile ./$(notdir $@)/Dockerfile.orig;\
fi;\
if [ -e ./$(notdir $@)/Dockerfile.$(ARCH).patch ]; then \
patch -f ./$(notdir $@)/Dockerfile ./$(notdir $@)/Dockerfile.$(ARCH).patch; \
fi
build/%: DARGS?=
build/%: ## build the latest image for a stack
docker build $(DARGS) --rm --force-rm -t $(OWNER)/$(notdir $@):latest ./$(notdir $@)
build-all: $(ALL_IMAGES:%=build/%) ## build all stacks
build-test-all: $(foreach I,$(ALL_IMAGES),build/$(I) test/$(I) ) ## build and test all stacks
build-all: $(foreach I,$(ALL_IMAGES),arch_patch/$(I) build/$(I) ) ## build all stacks
build-test-all: $(foreach I,$(ALL_IMAGES),arch_patch/$(I) build/$(I) test/$(I) ) ## build and test all stacks
dev/%: ARGS?=
dev/%: DARGS?=

View File

@@ -12,41 +12,30 @@ USER root
# Install all OS dependencies for notebook server that starts but lacks all
# features (e.g., download as all possible file formats)
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -yq --no-install-recommends \
wget \
curl \
RUN apt-get update && apt-get -yq dist-upgrade \
&& apt-get install -yq --no-install-recommends \
build-essential \
bzip2 \
ca-certificates \
sudo \
locales \
git \
bison \
byacc \
cpp \
csh \
make \
cmake \
zip \
build-essential \
ksh \
binutils \
git \
locales \
sudo \
wget \
&& apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN echo "LANGUAGE=en_US.UTF-8" >> /etc/environment
RUN echo "LC_ALL=en_US.UTF-8" >> /etc/environment
RUN echo "LC_TYPE=en_US.UTF-8" >> /etc/environment
RUN locale-gen en_US en_US.UTF-8 hu_HU hu_HU.UTF-8
RUN dpkg-reconfigure locales
RUN echo "LANGUAGE=en_US.UTF-8" >> /etc/default/locale
RUN echo "LC_ALL=en_US.UTF-8" >> /etc/default/locale
RUN echo "LC_TYPE=en_US.UTF-8" >> /etc/default/locale
RUN locale-gen en_US en_US.UTF-8
#build and install Tini
#build and install Tini for ppc64le
RUN wget https://github.com/krallin/tini/archive/v0.10.0.tar.gz && \
tar zxvf v0.10.0.tar.gz && \
rm -rf v0.10.0.tar.gz
WORKDIR tini-0.10.0/
RUN cmake . && make install
RUN ls -al
RUN mv ./tini /usr/local/bin/tini && \
chmod +x /usr/local/bin/tini
WORKDIR ..
@@ -77,42 +66,29 @@ RUN mkdir /home/$NB_USER/work && \
# Install conda as jovyan
RUN cd /tmp && \
mkdir -p $CONDA_DIR && \
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-ppc64le.sh && \
/bin/bash Miniconda3-latest-Linux-ppc64le.sh -f -b -p $CONDA_DIR && \
rm Miniconda3-latest-Linux-ppc64le.sh && \
$CONDA_DIR/bin/conda install --quiet --yes conda && \
wget https://repo.continuum.io/miniconda/Miniconda3-4.2.12-Linux-ppc64le.sh && \
/bin/bash Miniconda3-4.2.12-Linux-ppc64le.sh -f -b -p $CONDA_DIR && \
rm -rf Miniconda3-4.2.12-Linux-ppc64le.sh && \
$CONDA_DIR/bin/conda install --quiet --yes conda=4.2.12 && \
$CONDA_DIR/bin/conda config --system --add channels conda-forge && \
# no such option auto_update_conda on ppc64le
# $CONDA_DIR/bin/conda config --system --set auto_update_conda false && \
$CONDA_DIR/bin/conda config --system --set auto_update_conda false && \
conda clean -tipsy
# Temporary workaround for https://github.com/jupyter/docker-stacks/issues/210
# Stick with jpeg 8 to avoid problems with R packages
RUN echo "jpeg 8*" >> /opt/conda/conda-meta/pinned
RUN conda install conda-build && \
conda update conda && \
conda update conda-build && \
conda install python=3.5
# Install Jupyter notebook as jovyan
##----------------------------------------------
RUN pip install --upgrade pip
RUN pip install notebook
###-----------------------------------------------------------------
# Install JupyterHub to get the jupyterhub-singleuser startup script
RUN pip --no-cache-dir install 'jupyterhub==0.5'
# Show the list of installed packages
RUN conda list
RUN yes | pip install --upgrade pip
RUN yes | pip install --quiet --no-cache-dir \
'notebook==4.2.*' \
jupyterhub==0.7
USER root
EXPOSE 8888
WORKDIR /home/$NB_USER/work
RUN echo "ALL ALL = (ALL) NOPASSWD: ALL" >> /etc/sudoers
RUN cat /etc/sudoers
# Configure container startup
ENTRYPOINT ["tini", "--"]
@@ -122,8 +98,6 @@ CMD ["start-notebook.sh"]
COPY start.sh /usr/local/bin/
COPY start-notebook.sh /usr/local/bin/
COPY start-singleuser.sh /usr/local/bin/
RUN chmod 755 /usr/local/bin/start*.sh
COPY jupyter_notebook_config.py /home/$NB_USER/.jupyter/
RUN chown -R $NB_USER:users /home/$NB_USER/.jupyter

View File

@@ -0,0 +1,103 @@
--- Dockerfile 2016-12-07 14:36:13.998198003 -0500
+++ Dockerfile.ppc64le 2016-12-07 14:35:24.928197537 -0500
@@ -1,36 +1,44 @@
-# Copyright (c) Jupyter Development Team.
-# Distributed under the terms of the Modified BSD License.
+# Copyright (c) IBM Corporation 2016
+# Distributed under the terms of the Apache V2 License,
+# https://opensource.org/licenses/Apache-2.0
-# Debian Jessie image released 2016 May 03.
-FROM debian@sha256:32a225e412babcd54c0ea777846183c61003d125278882873fb2bc97f9057c51
+# Ubuntu image
+FROM ppc64le/ubuntu:trusty
-MAINTAINER Jupyter Project <jupyter@googlegroups.com>
+MAINTAINER Ilsiyar Gaynutdinov <ilsiyar_gaynutdinov@ru.ibm.com>
USER root
# Install all OS dependencies for notebook server that starts but lacks all
# features (e.g., download as all possible file formats)
ENV DEBIAN_FRONTEND noninteractive
-RUN REPO=http://cdn-fastly.deb.debian.org \
- && echo "deb $REPO/debian jessie main\ndeb $REPO/debian-security jessie/updates main" > /etc/apt/sources.list \
- && apt-get update && apt-get -yq dist-upgrade \
+RUN apt-get update && apt-get -yq dist-upgrade \
&& apt-get install -yq --no-install-recommends \
- wget \
+ build-essential \
bzip2 \
ca-certificates \
- sudo \
+ cmake \
+ git \
locales \
- && apt-get clean \
- && rm -rf /var/lib/apt/lists/*
-
-RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen && \
- locale-gen
+ sudo \
+ wget \
+ && apt-get clean && \
+ rm -rf /var/lib/apt/lists/*
-# Install Tini
-RUN wget --quiet https://github.com/krallin/tini/releases/download/v0.10.0/tini && \
- echo "1361527f39190a7338a0b434bd8c88ff7233ce7b9a4876f3315c22fce7eca1b0 *tini" | sha256sum -c - && \
- mv tini /usr/local/bin/tini && \
+RUN echo "LANGUAGE=en_US.UTF-8" >> /etc/default/locale
+RUN echo "LC_ALL=en_US.UTF-8" >> /etc/default/locale
+RUN echo "LC_TYPE=en_US.UTF-8" >> /etc/default/locale
+RUN locale-gen en_US en_US.UTF-8
+
+#build and install Tini for ppc64le
+RUN wget https://github.com/krallin/tini/archive/v0.10.0.tar.gz && \
+ tar zxvf v0.10.0.tar.gz && \
+ rm -rf v0.10.0.tar.gz
+WORKDIR tini-0.10.0/
+RUN cmake . && make install
+RUN mv ./tini /usr/local/bin/tini && \
chmod +x /usr/local/bin/tini
+WORKDIR ..
# Configure environment
ENV CONDA_DIR /opt/conda
@@ -58,11 +66,10 @@
# Install conda as jovyan
RUN cd /tmp && \
mkdir -p $CONDA_DIR && \
- wget --quiet https://repo.continuum.io/miniconda/Miniconda3-4.1.11-Linux-x86_64.sh && \
- echo "efd6a9362fc6b4085f599a881d20e57de628da8c1a898c08ec82874f3bad41bf *Miniconda3-4.1.11-Linux-x86_64.sh" | sha256sum -c - && \
- /bin/bash Miniconda3-4.1.11-Linux-x86_64.sh -f -b -p $CONDA_DIR && \
- rm Miniconda3-4.1.11-Linux-x86_64.sh && \
- $CONDA_DIR/bin/conda install --quiet --yes conda==4.1.11 && \
+ wget https://repo.continuum.io/miniconda/Miniconda3-4.2.12-Linux-ppc64le.sh && \
+ /bin/bash Miniconda3-4.2.12-Linux-ppc64le.sh -f -b -p $CONDA_DIR && \
+ rm -rf Miniconda3-4.2.12-Linux-ppc64le.sh && \
+ $CONDA_DIR/bin/conda install --quiet --yes conda=4.2.12 && \
$CONDA_DIR/bin/conda config --system --add channels conda-forge && \
$CONDA_DIR/bin/conda config --system --set auto_update_conda false && \
conda clean -tipsy
@@ -72,15 +79,16 @@
RUN echo "jpeg 8*" >> /opt/conda/conda-meta/pinned
# Install Jupyter notebook as jovyan
-RUN conda install --quiet --yes \
- 'notebook=4.2*' \
- jupyterhub=0.7 \
- && conda clean -tipsy
+RUN yes | pip install --upgrade pip
+RUN yes | pip install --quiet --no-cache-dir \
+ 'notebook==4.2.*' \
+ jupyterhub==0.7
USER root
EXPOSE 8888
WORKDIR /home/$NB_USER/work
+RUN echo "ALL ALL = (ALL) NOPASSWD: ALL" >> /etc/sudoers
# Configure container startup
ENTRYPOINT ["tini", "--"]