FROM envoyproxy/envoy:v1.11.1
RUN rm -rf /var/lib/apt/lists/*
RUN set -xe \
   &&  echo '#!/bin/sh' > /usr/sbin/policy-rc.d \
   &&  echo 'exit 101' >> /usr/sbin/policy-rc.d \
   &&  chmod +x /usr/sbin/policy-rc.d \
   &&  dpkg-divert --local --rename --add /sbin/initctl \
   &&  cp -a /usr/sbin/policy-rc.d /sbin/initctl \
   &&  sed -i 's/^exit.*/exit 0/' /sbin/initctl \
   &&  echo 'force-unsafe-io' > /etc/dpkg/dpkg.cfg.d/docker-apt-speedup \
   &&  echo 'DPkg::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' > /etc/apt/apt.conf.d/docker-clean \
   &&  echo 'APT::Update::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' >> /etc/apt/apt.conf.d/docker-clean \
   &&  echo 'Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";' >> /etc/apt/apt.conf.d/docker-clean \
   &&  echo 'Acquire::Languages "none";' > /etc/apt/apt.conf.d/docker-no-languages \
   &&  echo 'Acquire::GzipIndexes "true"; Acquire::CompressionTypes::Order:: "gz";' > /etc/apt/apt.conf.d/docker-gzip-indexes \
   &&  echo 'Apt::AutoRemove::SuggestsImportant "false";' > /etc/apt/apt.conf.d/docker-autoremove-suggests
RUN mkdir -p /run/systemd \
   &&  echo 'docker' > /run/systemd/container
CMD ["/bin/bash"]
RUN apt-get update \
   &&  apt-get install -y --no-install-recommends ca-certificates apt-transport-https gnupg-curl \
   &&  NVIDIA_GPGKEY_SUM=d1be581509378368edeec8c1eb2958702feedf3bc3d17011adbf24efacce4ab5 \
   &&  NVIDIA_GPGKEY_FPR=ae09fe4bbd223a84b2ccfce3f60f4b3d7fa2af80 \
   &&  apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub \
   &&  apt-key adv --export --no-emit-version -a $NVIDIA_GPGKEY_FPR | tail -n +5 > cudasign.pub \
   &&  echo "$NVIDIA_GPGKEY_SUM cudasign.pub" | sha256sum -c --strict - \
   &&  rm cudasign.pub \
   &&  echo "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64 /" > /etc/apt/sources.list.d/cuda.list \
   &&  echo "deb https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64 /" > /etc/apt/sources.list.d/nvidia-ml.list \
   &&  apt-get purge --auto-remove -y gnupg-curl \
   &&  rm -rf /var/lib/apt/lists/*
ENV CUDA_VERSION=10.0.130
ENV CUDA_PKG_VERSION=10-0=10.0.130-1
RUN apt-get update \
   &&  apt-get install -y --no-install-recommends cuda-cudart-$CUDA_PKG_VERSION cuda-compat-10-0 \
   &&  ln -s cuda-10.0 /usr/local/cuda \
   &&  rm -rf /var/lib/apt/lists/*
RUN echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf \
   &&  echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf
ENV PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64
ENV NVIDIA_VISIBLE_DEVICES=all
ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility
ENV NVIDIA_REQUIRE_CUDA=cuda>=10.0 brand=tesla,driver>=384,driver<385 brand=tesla,driver>=410,driver<411
ENV NCCL_VERSION=2.4.8
RUN apt-get update \
   &&  apt-get install -y --no-install-recommends cuda-libraries-$CUDA_PKG_VERSION cuda-nvtx-$CUDA_PKG_VERSION libnccl2=$NCCL_VERSION-1+cuda10.0 \
   &&  apt-mark hold libnccl2 \
   &&  rm -rf /var/lib/apt/lists/*
RUN apt-get update \
   &&  apt-get install -y --no-install-recommends cuda-nvml-dev-$CUDA_PKG_VERSION cuda-command-line-tools-$CUDA_PKG_VERSION cuda-libraries-dev-$CUDA_PKG_VERSION cuda-minimal-build-$CUDA_PKG_VERSION libnccl-dev=$NCCL_VERSION-1+cuda10.0 \
   &&  rm -rf /var/lib/apt/lists/*
ENV LIBRARY_PATH=/usr/local/cuda/lib64/stubs
ENV CUDNN_VERSION=7.6.3.30
LABEL com.nvidia.cudnn.version=7.6.3.30
RUN apt-get update \
   &&  apt-get install -y --no-install-recommends libcudnn7=$CUDNN_VERSION-1+cuda10.0 libcudnn7-dev=$CUDNN_VERSION-1+cuda10.0 \
   &&  apt-mark hold libcudnn7 \
   &&  rm -rf /var/lib/apt/lists/*
USER root:root
ENV com.nvidia.cuda.version=10.0.130
ENV com.nvidia.volumes.needed=nvidia_driver
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
ENV DEBIAN_FRONTEND=noninteractive
ENV LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64
ENV NCCL_DEBUG=INFO
ENV HOROVOD_GPU_ALLREDUCE=NCCL
RUN apt-get update \
   &&  apt-get install -y --no-install-recommends libmlx4-1 libmlx5-1 librdmacm1 libibverbs1 libmthca1 libdapl2 dapl2-utils openssh-client openssh-server iproute2 \
   &&  apt-get install -y build-essential bzip2=1.0.6-8ubuntu0.2 libbz2-1.0=1.0.6-8ubuntu0.2 systemd git wget cpio libsm6 libxext6 libxrender-dev fuse \
   &&  apt-get clean -y \
   &&  rm -rf /var/lib/apt/lists/*
ENV SVDIR=/var/runit
ENV WORKER_TIMEOUT=300
EXPOSE 5001 8883 8888
ENV MINICONDA_VERSION=4.5.11
ENV PATH=/opt/miniconda/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
RUN wget -qO /tmp/miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-${MINICONDA_VERSION}-Linux-x86_64.sh \
   &&  bash /tmp/miniconda.sh -bf -p /opt/miniconda \
   &&  conda clean -ay \
   &&  rm -rf /opt/miniconda/pkgs \
   &&  rm /tmp/miniconda.sh \
   &&  find / -type d -name __pycache__ | xargs rm -rf
ENV OPENMPI_VERSION=3.1.2
RUN mkdir /tmp/openmpi \
   &&  cd /tmp/openmpi \
   &&  wget https://download.open-mpi.org/release/open-mpi/v3.1/openmpi-${OPENMPI_VERSION}.tar.gz \
   &&  tar zxf openmpi-${OPENMPI_VERSION}.tar.gz \
   &&  cd openmpi-${OPENMPI_VERSION} \
   &&  ./configure --enable-orterun-prefix-by-default \
   &&  make -j $(nproc) all \
   &&  make install \
   &&  ldconfig \
   &&  rm -rf /tmp/openmpi
RUN mkdir /3p_src \
   &&  mkdir /3p_src/git \
   &&  cd /3p_src/git \
   &&  wget http://codeload.github.com/git/git/tar.gz/v2.7.4
USER root:root
RUN apt-get update \
   &&  apt-get install -y --no-install-recommends redis-server default-jre
RUN pip install torch==1.2.0 torchvision
RUN pip install jericho==2.4.2
RUN pip install pyyaml
RUN pip install tensorflow
RUN pip install tensorboard
RUN pip install fuzzywuzzy
RUN pip install networkx
RUN pip install sentencepiece
RUN pip install redis
RUN pip install spacy
RUN python -m spacy download en
RUN pip install transformers
RUN pip install Flask
RUN pip install gunicorn
RUN apt-get install -y --no-install-recommends unzip
WORKDIR /opt
RUN wget http://nlp.stanford.edu/software/stanford-corenlp-full-2018-10-05.zip \
   &&  unzip stanford-corenlp-full-2018-10-05.zip \
   &&  mv $(ls -d stanford-corenlp-full-*/) corenlp \
   &&  rm *.zip
WORKDIR /
COPY KG-A2C-chained /KG-A2C-chained
COPY models /KG-A2C-chained/kga2c/askbert/models
COPY roms /KG-A2C-chained/kga2c/roms
RUN mkdir /KG-A2C-chained/kga2c/model/
RUN mkdir /KG-A2C-chained/kga2c/model/checkpoints
WORKDIR /KG-A2C-chained
