content: # Copyright 2022 Google LLC
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  #      http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  
  ARG CUDA=11.1.1
  FROM nvidia/cuda:${CUDA}-cudnn8-runtime-ubuntu18.04
  # FROM directive resets ARGS, so we specify again (the value is retained if
  # previously set).
  ARG CUDA
  ARG ALPHAFOLD_COMMIT=032e2f2
  
  # Use bash to support string substitution.
  SHELL ["/bin/bash", "-o", "pipefail", "-c"]
  
  RUN apt-get update \
      && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
          build-essential \
          cmake \
          cuda-command-line-tools-$(cut -f1,2 -d- <<< ${CUDA//./-}) \
          git \
          hmmer \
          kalign \
          tzdata \
          wget \
      && rm -rf /var/lib/apt/lists/* \
      && apt-get autoremove -y \
      && apt-get clean
  
  # Compile HHsuite from source.
  RUN git clone --branch v3.3.0 https://github.com/soedinglab/hh-suite.git /tmp/hh-suite \
      && mkdir /tmp/hh-suite/build \
      && pushd /tmp/hh-suite/build \
      && cmake -DCMAKE_INSTALL_PREFIX=/opt/hhsuite .. \
      && make -j 4 && make install \
      && ln -s /opt/hhsuite/bin/* /usr/bin \
      && popd \
      && rm -rf /tmp/hh-suite
  
  # Install Miniconda package manager.
  RUN wget -q -P /tmp \
    https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \
      && bash /tmp/Miniconda3-latest-Linux-x86_64.sh -b -p /opt/conda \
      && rm /tmp/Miniconda3-latest-Linux-x86_64.sh
  
  # Install conda packages.
  ENV PATH="/opt/conda/bin:$PATH"
  RUN conda install -qy conda==24.11.2 \
      && conda install -y -c conda-forge \
        openmm=7.7.0 \
        cudatoolkit==${CUDA_VERSION} \
        pdbfixer \
        pip \
        python=3.10 \
        && conda clean --all --force-pkgs-dirs --yes
  
  RUN git clone https://github.com/deepmind/alphafold.git /app/alphafold
  RUN git -C /app/alphafold reset --hard $ALPHAFOLD_COMMIT
  RUN wget -q -P /app/alphafold/alphafold/common/ \
    https://git.scicore.unibas.ch/schwede/openstructure/-/raw/7102c63615b64735c4941278d92b554ec94415f8/modules/mol/alg/src/stereo_chemical_props.txt
  
  # Install pip packages.
  RUN pip3 install --upgrade pip --no-cache-dir \
      && pip3 install -r /app/alphafold/requirements.txt --no-cache-dir \
      && pip3 install --upgrade --no-cache-dir \
        jax==0.3.25 \
        jaxlib==0.3.25+cuda11.cudnn805 \
        -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
  
  # Add SETUID bit to the ldconfig binary so that non-root users can run it.
  RUN chmod u+s /sbin/ldconfig.real
  
  WORKDIR /modules
  ADD src/components/alphafold_utils.py .
  
  ENV PYTHONPATH=/app/alphafold:/modules
  RUN ldconfig
  
  