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
|
||||
# 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?=
|
||||
|
@@ -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 \
|
||||
bzip2 \
|
||||
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
|
||||
|
||||
|
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