FROM nvidia/cuda:11.3.1-cudnn8-runtime-ubuntu18.04

COPY . .

ENV LANG=C.UTF-8
RUN apt-key del 7fa2af80 && \
    apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub && \
    apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub && \
    apt-get update

RUN apt-get install -y software-properties-common && \
    apt-get update && \
    add-apt-repository ppa:git-core/ppa

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
    openssh-server  unzip curl \
    cmake gcc g++ \
    iputils-ping net-tools  iproute2  htop xauth \
    tmux wget vim git bzip2 ca-certificates  libxrender1  && \
    rm -rf /var/lib/apt/lists/* && \
    apt-get purge --auto-remove && \
    apt-get clean && \
    mkdir /var/run/sshd && \
    echo 'root:mld4' | chpasswd && \
    sed -i 's/^.*PermitRootLogin.*$/PermitRootLogin yes/' /etc/ssh/sshd_config && \
    sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
ENV PATH /opt/conda/bin:$PATH
RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.sh && \
    /bin/bash ~/miniconda.sh -b -p /opt/conda && \
    rm ~/miniconda.sh && \
    /opt/conda/bin/conda clean -ay && \
    echo ". /opt/conda/etc/profile.d/conda.sh" >> /etc/profile && \
    echo "conda activate base" >> /etc/profile

WORKDIR /root/code

ENV envname mol_gen
RUN . /opt/conda/etc/profile.d/conda.sh && \
    conda create -y -n mol_gen python=3.7 && \
    conda activate $envname && \
    conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch && \
    conda install -y -c conda-forge rdkit=2020.09.5 && \
    pip install tensorboardX && \
    pip install networkx && pip install tqdm && \
    pip install guacamol && conda install pyg -c pyg && \
    conda clean -ay &&  \
    sed -i 's/conda activate base/conda activate '"$envname"'/g' /etc/profile
    
ENV MKL_THREADING_LAYER GNU
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
ENV PATH /opt/conda/envs/${envname}/bin:$PATH
EXPOSE 6006
RUN echo "export LANG=C.UTF-8" >> /etc/profile && \
    echo "export MKL_THREADING_LAYER=GNU" >> /etc/profile