mirror of
https://github.com/jupyter/docker-stacks.git
synced 2025-10-18 07:22:57 +00:00
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:
20
Makefile
20
Makefile
@@ -8,6 +8,11 @@ SHELL:=bash
|
|||||||
|
|
||||||
OWNER:=jupyter
|
OWNER:=jupyter
|
||||||
# need to list these manually because there's a dependency tree
|
# 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 \
|
ALL_STACKS:=base-notebook \
|
||||||
minimal-notebook \
|
minimal-notebook \
|
||||||
r-notebook \
|
r-notebook \
|
||||||
@@ -16,6 +21,7 @@ ALL_STACKS:=base-notebook \
|
|||||||
datascience-notebook \
|
datascience-notebook \
|
||||||
pyspark-notebook \
|
pyspark-notebook \
|
||||||
all-spark-notebook
|
all-spark-notebook
|
||||||
|
endif
|
||||||
|
|
||||||
ALL_IMAGES:=$(ALL_STACKS)
|
ALL_IMAGES:=$(ALL_STACKS)
|
||||||
|
|
||||||
@@ -31,12 +37,22 @@ help:
|
|||||||
@echo
|
@echo
|
||||||
@grep -E '^[a-zA-Z0-9_%/-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
@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/%: DARGS?=
|
||||||
build/%: ## build the latest image for a stack
|
build/%: ## build the latest image for a stack
|
||||||
docker build $(DARGS) --rm --force-rm -t $(OWNER)/$(notdir $@):latest ./$(notdir $@)
|
docker build $(DARGS) --rm --force-rm -t $(OWNER)/$(notdir $@):latest ./$(notdir $@)
|
||||||
|
|
||||||
build-all: $(ALL_IMAGES:%=build/%) ## build all stacks
|
build-all: $(foreach I,$(ALL_IMAGES),arch_patch/$(I) build/$(I) ) ## build all stacks
|
||||||
build-test-all: $(foreach I,$(ALL_IMAGES),build/$(I) test/$(I) ) ## build and test all stacks
|
build-test-all: $(foreach I,$(ALL_IMAGES),arch_patch/$(I) build/$(I) test/$(I) ) ## build and test all stacks
|
||||||
|
|
||||||
dev/%: ARGS?=
|
dev/%: ARGS?=
|
||||||
dev/%: DARGS?=
|
dev/%: DARGS?=
|
||||||
|
@@ -12,41 +12,30 @@ USER root
|
|||||||
# Install all OS dependencies for notebook server that starts but lacks all
|
# Install all OS dependencies for notebook server that starts but lacks all
|
||||||
# features (e.g., download as all possible file formats)
|
# features (e.g., download as all possible file formats)
|
||||||
ENV DEBIAN_FRONTEND noninteractive
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
RUN apt-get update && apt-get install -yq --no-install-recommends \
|
RUN apt-get update && apt-get -yq dist-upgrade \
|
||||||
wget \
|
&& apt-get install -yq --no-install-recommends \
|
||||||
curl \
|
build-essential \
|
||||||
bzip2 \
|
bzip2 \
|
||||||
ca-certificates \
|
ca-certificates \
|
||||||
sudo \
|
|
||||||
locales \
|
|
||||||
git \
|
|
||||||
bison \
|
|
||||||
byacc \
|
|
||||||
cpp \
|
|
||||||
csh \
|
|
||||||
make \
|
|
||||||
cmake \
|
cmake \
|
||||||
zip \
|
git \
|
||||||
build-essential \
|
locales \
|
||||||
ksh \
|
sudo \
|
||||||
binutils \
|
wget \
|
||||||
&& apt-get clean && \
|
&& apt-get clean && \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
RUN echo "LANGUAGE=en_US.UTF-8" >> /etc/environment
|
RUN echo "LANGUAGE=en_US.UTF-8" >> /etc/default/locale
|
||||||
RUN echo "LC_ALL=en_US.UTF-8" >> /etc/environment
|
RUN echo "LC_ALL=en_US.UTF-8" >> /etc/default/locale
|
||||||
RUN echo "LC_TYPE=en_US.UTF-8" >> /etc/environment
|
RUN echo "LC_TYPE=en_US.UTF-8" >> /etc/default/locale
|
||||||
RUN locale-gen en_US en_US.UTF-8 hu_HU hu_HU.UTF-8
|
RUN locale-gen en_US en_US.UTF-8
|
||||||
RUN dpkg-reconfigure locales
|
|
||||||
|
|
||||||
|
#build and install Tini for ppc64le
|
||||||
#build and install Tini
|
|
||||||
RUN wget https://github.com/krallin/tini/archive/v0.10.0.tar.gz && \
|
RUN wget https://github.com/krallin/tini/archive/v0.10.0.tar.gz && \
|
||||||
tar zxvf v0.10.0.tar.gz && \
|
tar zxvf v0.10.0.tar.gz && \
|
||||||
rm -rf v0.10.0.tar.gz
|
rm -rf v0.10.0.tar.gz
|
||||||
WORKDIR tini-0.10.0/
|
WORKDIR tini-0.10.0/
|
||||||
RUN cmake . && make install
|
RUN cmake . && make install
|
||||||
RUN ls -al
|
|
||||||
RUN mv ./tini /usr/local/bin/tini && \
|
RUN mv ./tini /usr/local/bin/tini && \
|
||||||
chmod +x /usr/local/bin/tini
|
chmod +x /usr/local/bin/tini
|
||||||
WORKDIR ..
|
WORKDIR ..
|
||||||
@@ -77,42 +66,29 @@ RUN mkdir /home/$NB_USER/work && \
|
|||||||
# Install conda as jovyan
|
# Install conda as jovyan
|
||||||
RUN cd /tmp && \
|
RUN cd /tmp && \
|
||||||
mkdir -p $CONDA_DIR && \
|
mkdir -p $CONDA_DIR && \
|
||||||
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-ppc64le.sh && \
|
wget https://repo.continuum.io/miniconda/Miniconda3-4.2.12-Linux-ppc64le.sh && \
|
||||||
/bin/bash Miniconda3-latest-Linux-ppc64le.sh -f -b -p $CONDA_DIR && \
|
/bin/bash Miniconda3-4.2.12-Linux-ppc64le.sh -f -b -p $CONDA_DIR && \
|
||||||
rm Miniconda3-latest-Linux-ppc64le.sh && \
|
rm -rf Miniconda3-4.2.12-Linux-ppc64le.sh && \
|
||||||
$CONDA_DIR/bin/conda install --quiet --yes conda && \
|
$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 --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
|
conda clean -tipsy
|
||||||
|
|
||||||
# Temporary workaround for https://github.com/jupyter/docker-stacks/issues/210
|
# Temporary workaround for https://github.com/jupyter/docker-stacks/issues/210
|
||||||
# Stick with jpeg 8 to avoid problems with R packages
|
# Stick with jpeg 8 to avoid problems with R packages
|
||||||
RUN echo "jpeg 8*" >> /opt/conda/conda-meta/pinned
|
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
|
# Install Jupyter notebook as jovyan
|
||||||
##----------------------------------------------
|
RUN yes | pip install --upgrade pip
|
||||||
RUN pip install --upgrade pip
|
RUN yes | pip install --quiet --no-cache-dir \
|
||||||
RUN pip install notebook
|
'notebook==4.2.*' \
|
||||||
|
jupyterhub==0.7
|
||||||
###-----------------------------------------------------------------
|
|
||||||
# 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
|
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
|
|
||||||
EXPOSE 8888
|
EXPOSE 8888
|
||||||
WORKDIR /home/$NB_USER/work
|
WORKDIR /home/$NB_USER/work
|
||||||
RUN echo "ALL ALL = (ALL) NOPASSWD: ALL" >> /etc/sudoers
|
RUN echo "ALL ALL = (ALL) NOPASSWD: ALL" >> /etc/sudoers
|
||||||
RUN cat /etc/sudoers
|
|
||||||
|
|
||||||
# Configure container startup
|
# Configure container startup
|
||||||
ENTRYPOINT ["tini", "--"]
|
ENTRYPOINT ["tini", "--"]
|
||||||
@@ -122,8 +98,6 @@ CMD ["start-notebook.sh"]
|
|||||||
COPY start.sh /usr/local/bin/
|
COPY start.sh /usr/local/bin/
|
||||||
COPY start-notebook.sh /usr/local/bin/
|
COPY start-notebook.sh /usr/local/bin/
|
||||||
COPY start-singleuser.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/
|
COPY jupyter_notebook_config.py /home/$NB_USER/.jupyter/
|
||||||
RUN chown -R $NB_USER:users /home/$NB_USER/.jupyter
|
RUN chown -R $NB_USER:users /home/$NB_USER/.jupyter
|
||||||
|
|
||||||
|
103
base-notebook/Dockerfile.ppc64le.patch
Normal file
103
base-notebook/Dockerfile.ppc64le.patch
Normal 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", "--"]
|
Reference in New Issue
Block a user