Dockerfile 3.54 KB
Newer Older
Ivan Bogatyy's avatar
Ivan Bogatyy committed
1
# Java baseimage, for Bazel.
Ivan Bogatyy's avatar
Ivan Bogatyy committed
2
FROM openjdk:8
3
4
5

ENV SYNTAXNETDIR=/opt/tensorflow PATH=$PATH:/root/bin

Ivan Bogatyy's avatar
Ivan Bogatyy committed
6
7
8
9
# Install system packages. This doesn't include everything the TensorFlow
# dockerfile specifies, so if anything goes awry, maybe install more packages
# from there. Also, running apt-get clean before further commands will make the
# Docker images smaller.
10
11
12
RUN mkdir -p $SYNTAXNETDIR \
    && cd $SYNTAXNETDIR \
    && apt-get update \
Ivan Bogatyy's avatar
Ivan Bogatyy committed
13
14
15
16
17
18
19
20
21
    && apt-get install -y \
          file \
          git \
          graphviz \
          libcurl3-dev \
          libfreetype6-dev \
          libgraphviz-dev \
          liblapack-dev \
          libopenblas-dev \
Mathias Deschamps's avatar
Mathias Deschamps committed
22
          libpng-dev \
Ivan Bogatyy's avatar
Ivan Bogatyy committed
23
          libxft-dev \
Mathias Deschamps's avatar
Mathias Deschamps committed
24
          patch \
Ivan Bogatyy's avatar
Ivan Bogatyy committed
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
          python-dev \
          python-mock \
          python-pip \
          python2.7 \
          swig \
          vim \
          zlib1g-dev \
    && apt-get clean \
    && (rm -f /var/cache/apt/archives/*.deb \
        /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true)

# Install common Python dependencies. Similar to above, remove caches
# afterwards to help keep Docker images smaller.
RUN pip install --ignore-installed pip \
    && python -m pip install numpy \
    && rm -rf /root/.cache/pip /tmp/pip*
RUN python -m pip install \
          asciitree \
          ipykernel \
          jupyter \
          matplotlib \
          pandas \
          protobuf \
          scipy \
          sklearn \
    && python -m ipykernel.kernelspec \
    && python -m pip install pygraphviz \
          --install-option="--include-path=/usr/include/graphviz" \
          --install-option="--library-path=/usr/lib/graphviz/" \
Ivan Bogatyy's avatar
Ivan Bogatyy committed
54
55
    && python -m jupyter_core.command nbextension enable \
          --py --sys-prefix widgetsnbextension \
Ivan Bogatyy's avatar
Ivan Bogatyy committed
56
57
58
    && rm -rf /root/.cache/pip /tmp/pip*

# Installs the latest version of Bazel.
Mathias Deschamps's avatar
Mathias Deschamps committed
59
60
61
62
RUN wget --quiet https://github.com/bazelbuild/bazel/releases/download/0.5.4/bazel-0.5.4-installer-linux-x86_64.sh \
    && chmod +x bazel-0.5.4-installer-linux-x86_64.sh \
    && ./bazel-0.5.4-installer-linux-x86_64.sh \
    && rm ./bazel-0.5.4-installer-linux-x86_64.sh
Ivan Bogatyy's avatar
Ivan Bogatyy committed
63
64
65
66
67

COPY WORKSPACE $SYNTAXNETDIR/syntaxnet/WORKSPACE
COPY tools/bazel.rc $SYNTAXNETDIR/syntaxnet/tools/bazel.rc
COPY tensorflow $SYNTAXNETDIR/syntaxnet/tensorflow

Mathias Deschamps's avatar
Mathias Deschamps committed
68
69
# Workaround solving the PYTHON_BIN_PATH not found problem
ENV PYTHON_BIN_PATH=/usr/bin/python
Ivan Bogatyy's avatar
Ivan Bogatyy committed
70
71
72
73
# Compile common TensorFlow targets, which don't depend on DRAGNN / SyntaxNet
# source. This makes it more convenient to re-compile DRAGNN / SyntaxNet for
# development (though not as convenient as the docker-devel scripts).
RUN cd $SYNTAXNETDIR/syntaxnet/tensorflow \
Mathias Deschamps's avatar
Mathias Deschamps committed
74
    && ./configure CPU \
Ivan Bogatyy's avatar
Ivan Bogatyy committed
75
76
    && cd $SYNTAXNETDIR/syntaxnet \
    && bazel build -c opt @org_tensorflow//tensorflow:tensorflow_py
77

Ivan Bogatyy's avatar
Ivan Bogatyy committed
78
79
80
81
82
83
84
# Build the codez.
WORKDIR $SYNTAXNETDIR/syntaxnet
COPY dragnn $SYNTAXNETDIR/syntaxnet/dragnn
COPY syntaxnet $SYNTAXNETDIR/syntaxnet/syntaxnet
COPY third_party $SYNTAXNETDIR/syntaxnet/third_party
COPY util/utf8 $SYNTAXNETDIR/syntaxnet/util/utf8
RUN bazel build -c opt //dragnn/python:all //dragnn/tools:all
85

Ivan Bogatyy's avatar
Ivan Bogatyy committed
86
87
88
89
# This makes the IP exposed actually "*"; we'll do host restrictions by passing
# a hostname to the `docker run` command.
COPY tensorflow/tensorflow/tools/docker/jupyter_notebook_config.py /root/.jupyter/
EXPOSE 8888
90

Ivan Bogatyy's avatar
Ivan Bogatyy committed
91
92
93
# This does not need to be compiled, only copied.
COPY examples $SYNTAXNETDIR/syntaxnet/examples
# Todo: Move this earlier in the file (don't want to invalidate caches for now).
94

95
CMD /bin/bash -c "bazel-bin/dragnn/tools/oss_notebook_launcher notebook --debug --notebook-dir=/opt/tensorflow/syntaxnet/examples --allow-root"