-
Notifications
You must be signed in to change notification settings - Fork 14
/
Dockerfile.fedora26
159 lines (134 loc) · 6.06 KB
/
Dockerfile.fedora26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
FROM registry.fedoraproject.org/f26/s2i-core
MAINTAINER Subin Modeel <smodeel@redhat.com>
USER root
ENV BUILDER_VERSION 1.0
LABEL io.k8s.description="S2I builder for Tensorflow binaries." \
io.k8s.display-name="Tensorflow BUILD" \
io.openshift.expose-services="8080:http" \
io.openshift.tags="builder,python,tf-build" \
io.openshift.s2i.scripts-url="image:///usr/libexec/s2i"
# DONOT uncomment. uncomment for dev.
ARG BAZEL_VERSION=0.15.0
ARG NB_PYTHON_VER=3.6
ENV BAZEL_VERSION=$BAZEL_VERSION
ENV NB_PYTHON_VER=$NB_PYTHON_VER
# Not essential, but wise to set the lang
# Note: Users with other languages should set this in their derivative image
ENV LANGUAGE en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LC_ALL=""
ENV PYTHONIOENCODING UTF-8
ENV NB_USER=default
ENV NB_UID=1001
#### ENV NB_PYTHON_VER=DONOT UNCOMMENT
ENV PYTHON_BIN_PATH=/usr/bin/python
ENV TINI_VERSION=v0.16.1
## Bazel
ENV PYTHON_LIB_PATH=/usr/lib64/python$NB_PYTHON_VER/site-packages
ENV LD_LIBRARY_PATH="/usr/local/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}";
ENV BAZELRC /root/.bazelrc
#### ENV BAZEL_VERSION = DONOT UNCOMMENT
################################################
## Tensorflow ./configure options for Bazel
################################################
ENV PYTHON_BIN_PATH=/usr/bin/python$NB_PYTHON_VER
ENV CC_OPT_FLAGS -march=native
ENV TF_NEED_JEMALLOC 1
ENV TF_NEED_GCP 0
ENV TF_NEED_VERBS 0
ENV TF_NEED_HDFS 0
ENV TF_ENABLE_XLA 0
ENV TF_NEED_OPENCL 0
ENV TF_NEED_CUDA 0
ENV TF_NEED_MPI 0
ENV TF_NEED_GDR 0
ENV TF_NEED_S3 0
ENV TF_NEED_KAFKA 0
ENV TF_NEED_OPENCL_SYCL 0
ENV TF_DOWNLOAD_CLANG 0
ENV TF_SET_ANDROID_WORKSPACE 0
ENV PATH /usr/local/bin:$PATH":/home/default/.local/bin
ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk-1.8.0*
RUN echo 'PS1="\u@\h:\w\\$ \[$(tput sgr0)\]"' >> /root/.bashrc \
&& if [ "$NB_PYTHON_VER" = "2.7" ] ; then yum install -y python27 python-devel && rm -fr /usr/bin/python && ln -s /usr/bin/python2.7 /usr/bin/python ; fi \
&& if [ "$NB_PYTHON_VER" = "3.5" ] ; then yum install -y python35 python3-devel && rm -fr /usr/bin/python && ln -s /usr/bin/python3.5 /usr/bin/python; fi \
&& if [ "$NB_PYTHON_VER" = "3.6" ] ; then yum install -y python36 python3-devel && rm -fr /usr/bin/python && ln -s /usr/bin/python3.6 /usr/bin/python; fi \
&& dnf install -y tar tree which git curl wget java-headless bzip2 gnupg2 sqlite protobuf-compiler \
&& chgrp -R root /opt \
&& chmod -R a+rwx /opt \
&& chmod a+rw /etc/passwd \
&& curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" \
&& python$NB_PYTHON_VER get-pip.py \
&& dnf install -y gcc gcc-c++ glibc-devel openssl-devel gpg \
&& dnf install -y which findutils x86info cpuid dmidecode procps \
&& dnf install -y kernel-devel make automake autoconf swig zip unzip libtool binutils \
&& dnf install -y freetype-devel libpng12-devel zlib-devel giflib-devel zeromq-devel \
&& dnf install -y libxml2 libxml2-devel libxslt libxslt-devel gzip \
&& mkdir -p /home/$NB_USER/.ssh \
&& echo 'alias ll="ls -l"' >> /home/$NB_USER/.bashrc \
&& ssh-keyscan pagure.io >> /home/$NB_USER/.ssh/known_hosts \
&& dnf install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel patch gdb file pciutils cmake \
&& wget -q https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini -P /tmp \
&& wget -q https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini.asc -P /tmp \
&& cd /tmp \
&& gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 0527A9B7 && gpg --verify /tmp/tini.asc \
&& mv /tmp/tini /usr/local/bin/tini \
&& chmod +x /usr/local/bin/tini \
&& chown -R 1001:1001 /opt/app-root \
&& chgrp -R root /opt/app-root \
&& chmod -R ug+rwx /opt/app-root \
&& echo "startup --batch" >>/etc/.bazelrc \
&& echo "startup --batch" >>/root/.bazelrc \
&& echo "build --spawn_strategy=standalone --genrule_strategy=standalone" >>/etc/.bazelrc \
&& echo "build --spawn_strategy=standalone --genrule_strategy=standalone" >>/root/.bazelrc
#https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/ci_build/install/.bazelrc
# Running bazel inside a `docker build` command causes trouble, cf:
# https://github.com/bazelbuild/bazel/issues/134
# The easiest solution is to set up a bazelrc file forcing --batch.
# Similarly, we need to workaround sandboxing issues:
# https://github.com/bazelbuild/bazel/issues/418
#
# A cloned repo is found under serving folder
#Size of bazel-$BAZEL_VERSION-installer-linux-x86_64.sh is 200MB+
# downloaded file is available under bazel folder
# No yum commands here
# removed python to fix numpy issue
RUN mkdir -p /tf \
&& pip install --no-cache-dir --upgrade pip \
&& pip install --no-cache-dir -U setuptools \
&& pip install --no-cache-dir enum34 futures mock numpy six pixiedust pillow pyyaml \
&& mkdir -p /tf/tools \
&& cd /tf/tools \
&& wget -q https://github.com/bazelbuild/bazel/releases/download/$BAZEL_VERSION/bazel-$BAZEL_VERSION-installer-linux-x86_64.sh \
&& ls -l /tf/tools \
&& chmod +x bazel-$BAZEL_VERSION-installer-linux-x86_64.sh \
&& ./bazel-$BAZEL_VERSION-installer-linux-x86_64.sh \
&& bazel \
&& usermod -g root $NB_USER \
&& mkdir -p /workspace \
&& chown $NB_UID:root /workspace \
&& chmod 1777 /workspace \
&& mkdir -p /home/$NB_USER \
&& chown -R $NB_UID:root /home/$NB_USER \
&& chmod g+rwX,o+rX -R /home/$NB_USER
COPY ./s2i/bin/ /usr/libexec/s2i
ADD test/ /tmp/test/
ADD entrypoint /entrypoint
RUN chmod +x /entrypoint
ADD build_tools /build_tools
# NO CLEANUP
# Donot add below commands
# && yum erase -y gcc gcc-c++ glibc-devel \
# && yum clean all -y \
EXPOSE 8080
ENV HOME /home/$NB_USER
# This default user is created in the openshift/base-centos7 image
USER 1001
# Make the default PWD somewhere that the user can write. This is
# useful when connecting with 'oc run' and starting a 'spark-shell',
# which will likely try to create files and directories in PWD and
# error out if it cannot.
WORKDIR /workspace
ENTRYPOINT ["/entrypoint"]
# TODO: Set the default CMD for the image
CMD ["/usr/libexec/s2i/usage"]