Permalink
| # Java baseimage, for Bazel. | |
| FROM openjdk:8 | |
| ENV SYNTAXNETDIR=/opt/tensorflow PATH=$PATH:/root/bin | |
| # 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. | |
| RUN mkdir -p $SYNTAXNETDIR \ | |
| && cd $SYNTAXNETDIR \ | |
| && apt-get update \ | |
| && apt-get install -y \ | |
| file \ | |
| git \ | |
| graphviz \ | |
| libcurl3-dev \ | |
| libfreetype6-dev \ | |
| libgraphviz-dev \ | |
| liblapack-dev \ | |
| libopenblas-dev \ | |
| libpng12-dev \ | |
| libxft-dev \ | |
| 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/" \ | |
| && python -m jupyter_core.command nbextension enable \ | |
| --py --sys-prefix widgetsnbextension \ | |
| && rm -rf /root/.cache/pip /tmp/pip* | |
| # Installs the latest version of Bazel. | |
| RUN wget --quiet https://github.com/bazelbuild/bazel/releases/download/0.4.3/bazel-0.4.3-installer-linux-x86_64.sh \ | |
| && chmod +x bazel-0.4.3-installer-linux-x86_64.sh \ | |
| && ./bazel-0.4.3-installer-linux-x86_64.sh \ | |
| && rm ./bazel-0.4.3-installer-linux-x86_64.sh | |
| COPY WORKSPACE $SYNTAXNETDIR/syntaxnet/WORKSPACE | |
| COPY tools/bazel.rc $SYNTAXNETDIR/syntaxnet/tools/bazel.rc | |
| COPY tensorflow $SYNTAXNETDIR/syntaxnet/tensorflow | |
| # 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 \ | |
| && tensorflow/tools/ci_build/builds/configured CPU \ | |
| && cd $SYNTAXNETDIR/syntaxnet \ | |
| && bazel build -c opt @org_tensorflow//tensorflow:tensorflow_py | |
| # 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 | |
| # 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 | |
| # 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). | |
| CMD /bin/bash -c "bazel-bin/dragnn/tools/oss_notebook_launcher notebook --debug --notebook-dir=/opt/tensorflow/syntaxnet/examples --allow-root" |