|
a |
|
b/deeplearn-approach/docker/Dockerfile.cpu |
|
|
1 |
FROM ubuntu:14.04 |
|
|
2 |
MAINTAINER Fernando Andreotti <fernando.andreotti@eng.ox.ac.uk> |
|
|
3 |
|
|
|
4 |
# Versions used for some packages |
|
|
5 |
ARG CONDA_VERSION=4.3.1 |
|
|
6 |
ARG CONDA_ENV |
|
|
7 |
ARG TENSORFLOW_VERSION=1.0* |
|
|
8 |
ARG KERAS_VERSION=2.0.2 |
|
|
9 |
ARG PYTHON_VERSION=3.5 |
|
|
10 |
|
|
|
11 |
ENTRYPOINT ["/bin/bash", "-c" ] |
|
|
12 |
|
|
|
13 |
USER root |
|
|
14 |
|
|
|
15 |
# Install some dependencies |
|
|
16 |
ENV DEBIAN_FRONTEND noninteractive |
|
|
17 |
ENV CONDA_ENV_PATH /opt/miniconda |
|
|
18 |
ENV MYCONDA_ENV "deeplearn" |
|
|
19 |
ENV CONDA_ACTIVATE "source $CONDA_ENV_PATH/bin/activate $MYCONDA_ENV" |
|
|
20 |
|
|
|
21 |
RUN apt-get update --fix-missing -qq \ |
|
|
22 |
&& apt-get install --no-install-recommends -y \ |
|
|
23 |
autoconf \ |
|
|
24 |
automake \ |
|
|
25 |
bc \ |
|
|
26 |
build-essential \ |
|
|
27 |
bzip2 \ |
|
|
28 |
cmake \ |
|
|
29 |
curl \ |
|
|
30 |
g++ \ |
|
|
31 |
gfortran \ |
|
|
32 |
git \ |
|
|
33 |
language-pack-en \ |
|
|
34 |
libatlas-dev \ |
|
|
35 |
libatlas3gf-base \ |
|
|
36 |
libcurl4-openssl-dev \ |
|
|
37 |
libffi-dev \ |
|
|
38 |
libfreetype6-dev \ |
|
|
39 |
libglib2.0-0 \ |
|
|
40 |
libhdf5-dev \ |
|
|
41 |
liblcms2-dev \ |
|
|
42 |
libopenblas-dev \ |
|
|
43 |
libssl-dev \ |
|
|
44 |
libtiff5-dev \ |
|
|
45 |
libtool \ |
|
|
46 |
libwebp-dev \ |
|
|
47 |
libzmq3-dev \ |
|
|
48 |
make \ |
|
|
49 |
nano \ |
|
|
50 |
pkg-config \ |
|
|
51 |
software-properties-common \ |
|
|
52 |
unzip \ |
|
|
53 |
wget \ |
|
|
54 |
zlib1g-dev \ |
|
|
55 |
qt5-default \ |
|
|
56 |
libvtk6-dev \ |
|
|
57 |
zlib1g-dev |
|
|
58 |
|
|
|
59 |
# Install miniconda to /opt/miniconda |
|
|
60 |
RUN curl -LO http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh |
|
|
61 |
RUN /bin/bash Miniconda-latest-Linux-x86_64.sh -p $CONDA_ENV_PATH -b |
|
|
62 |
RUN rm Miniconda-latest-Linux-x86_64.sh |
|
|
63 |
ENV PATH=$CONDA_ENV_PATH/bin:${PATH} |
|
|
64 |
RUN conda update --quiet --yes conda |
|
|
65 |
|
|
|
66 |
ENV PATH ${CONDA_ENV_PATH}/bin:$PATH |
|
|
67 |
|
|
|
68 |
# Creating Anaconda environment |
|
|
69 |
RUN conda create -y --name $MYCONDA_ENV python=${PYTHON_VERSION} |
|
|
70 |
|
|
|
71 |
# Install Python 3 packages |
|
|
72 |
|
|
|
73 |
RUN conda install -c conda-forge -y -n $MYCONDA_ENV\ |
|
|
74 |
'beautifulsoup4=4.5*' \ |
|
|
75 |
'hdf5=1.8.17' \ |
|
|
76 |
'h5py=2.7*' \ |
|
|
77 |
'ipython=5.1*' \ |
|
|
78 |
'ipykernel=4.5*' \ |
|
|
79 |
'ipywidgets=5.2*' \ |
|
|
80 |
'jupyter=1.0*' \ |
|
|
81 |
'lxml=3.8*' \ |
|
|
82 |
'matplotlib=2.0*' \ |
|
|
83 |
'notebook=4.3*' \ |
|
|
84 |
'numpy=1.12*' \ |
|
|
85 |
'pandas=0.20*' \ |
|
|
86 |
'pillow=4.2*' \ |
|
|
87 |
'pip=9.0*' \ |
|
|
88 |
'python=3.5*' \ |
|
|
89 |
'rpy2=2.8*' \ |
|
|
90 |
'scipy=0.19*' \ |
|
|
91 |
'scikit-learn=0.19*' \ |
|
|
92 |
'scikit-image=0.13*' \ |
|
|
93 |
'setuptools=36.3*' \ |
|
|
94 |
'six=1.10*' \ |
|
|
95 |
'sphinx=1.5*' \ |
|
|
96 |
'spyder=3.1*' && \ |
|
|
97 |
conda clean -tipsy |
|
|
98 |
|
|
|
99 |
# Some R dependencies |
|
|
100 |
RUN conda install -c conda-forge -n $MYCONDA_ENV r-r.utils r-lme4 r-nlme |
|
|
101 |
|
|
|
102 |
# Install TensorFlow |
|
|
103 |
RUN conda install -c conda-forge -n $MYCONDA_ENV tensorflow=${TENSORFLOW_VERSION} |
|
|
104 |
|
|
|
105 |
|
|
|
106 |
# Install Keras |
|
|
107 |
ENV KERAS_BACKEND=tensorflow |
|
|
108 |
RUN conda install -c conda-forge -n $MYCONDA_ENV keras=${KERAS_VERSION} |
|
|
109 |
|
|
|
110 |
RUN rm /bin/sh && ln -s /bin/bash /bin/sh |
|
|
111 |
|
|
|
112 |
RUN conda info --envs |
|
|
113 |
RUN sed -i 's/theano/tensorflow/g' ${CONDA_ENV_PATH}/envs/${MYCONDA_ENV}/etc/conda/activate.d/keras_activate.sh # make tensorflow default |
|
|
114 |
|
|
|
115 |
# Visualization tools |
|
|
116 |
RUN conda install -c conda-forge -y -n $MYCONDA_ENV \ |
|
|
117 |
graphviz=2.38.0 \ |
|
|
118 |
pydotplus=2.0.2 |
|
|
119 |
|
|
|
120 |
|
|
|
121 |
|
|
|
122 |
RUN $CONDA_ACTIVATE && pip install --upgrade pip && \ |
|
|
123 |
pip install git+git://github.com/stared/keras-sequential-ascii.git \ |
|
|
124 |
pydot3 |
|
|
125 |
|
|
|
126 |
#################### |
|
|
127 |
## Running tests ### |
|
|
128 |
#################### |
|
|
129 |
|
|
|
130 |
ENV HOME /sharedfolder |
|
|
131 |
WORKDIR /sharedfolder |
|
|
132 |
|
|
|
133 |
# Add a notebook profile. |
|
|
134 |
RUN mkdir -p -m 700 /sharedfolder/.jupyter/ && \ |
|
|
135 |
echo "c.NotebookApp.ip = '*'" >> /sharedfolder/.jupyter/jupyter_notebook_config.py \ |
|
|
136 |
echo "c.NotebookApp.port = 8888" >> /sharedfolder/.jupyter/jupyter_notebook_config.py \ |
|
|
137 |
echo "c.NotebookApp.open_browser = False" >> /sharedfolder/.jupyter/jupyter_notebook_config.py \ |
|
|
138 |
echo "c.MultiKernelManager.default_kernel_name = 'python3'" >> /sharedfolder/.jupyter/jupyter_notebook_config.py \ |
|
|
139 |
echo "c.NotebookApp.allow_root = True" >> /sharedfolder/.jupyter/jupyter_notebook_config.py \ |
|
|
140 |
echo "c.NotebookApp.password_required = False" >> /sharedfolder/.jupyter/jupyter_notebook_config.py \ |
|
|
141 |
echo "c.NotebookApp.token = ''" >> /sharedfolder/.jupyter/jupyter_notebook_config.py |
|
|
142 |
|
|
|
143 |
|
|
|
144 |
# Expose Ports for TensorBoard (6006), Ipython (8888) |
|
|
145 |
EXPOSE 6006 8888 |
|
|
146 |
|
|
|
147 |
CMD ["source activate deeplearn && /bin/bash"] |