|
1 |
| -FROM nvidia/cuda:11.7.1-devel-ubuntu22.04 |
| 1 | +# Stage 1: Build Environment Setup |
| 2 | +FROM nvidia/cuda:11.7.1-devel-ubuntu22.04 as builder |
2 | 3 |
|
3 |
| -RUN apt-get update -y |
4 |
| -RUN apt-get install -y sudo wget curl nano git && rm -rf /var/lib/apt/lists/* |
| 4 | +RUN apt-get update -y && apt-get install -y wget curl git tar bzip2 && rm -rf /var/lib/apt/lists/* |
5 | 5 |
|
6 | 6 | # Create a user
|
7 | 7 | ENV APPUSER="appuser"
|
8 | 8 | ENV HOME=/home/$APPUSER
|
9 | 9 | RUN useradd -m -u 1000 $APPUSER
|
10 |
| - |
11 | 10 | USER $APPUSER
|
12 | 11 | WORKDIR $HOME
|
13 | 12 |
|
14 |
| -RUN mkdir -p ~/.cache/torch/hub/checkpoints |
15 |
| -# Download ESM models |
16 |
| -ENV ESM_MODEL="esm2_t33_650M_UR50D" |
17 |
| -ENV CONTACT_MODEL="$ESM_MODEL-contact-regression" |
18 |
| -RUN curl -o ~/.cache/torch/hub/checkpoints/$ESM_MODEL.pt https://dl.fbaipublicfiles.com/fair-esm/models/$ESM_MODEL.pt |
19 |
| -RUN curl -o ~/.cache/torch/hub/checkpoints/$CONTACT_MODEL.pt https://dl.fbaipublicfiles.com/fair-esm/regression/$CONTACT_MODEL.pt |
| 13 | +ENV ENV_NAME="diffdock-pocket" |
20 | 14 |
|
21 |
| -# Build is significantly faster with micromamba, rather than conda |
| 15 | +# Install micromamba |
22 | 16 | RUN curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xj bin/micromamba
|
23 |
| - |
24 |
| -# Set the environment variables |
25 |
| -ENV MAMBA_ROOT_PREFIX=$HOME/micromamba |
26 | 17 | ENV PATH=$HOME/bin:$HOME/.local/bin:$PATH
|
27 | 18 |
|
28 |
| -RUN ~/bin/micromamba shell init -s bash --root-prefix $MAMBA_ROOT_PREFIX # this writes to your .bashrc file |
29 |
| -RUN ~/bin/micromamba --version |
30 |
| - |
31 |
| -# Create conda environment first |
32 |
| -# This is time-consuming and don't want to reproduce it often |
| 19 | +# Copy and create Conda environment |
33 | 20 | ENV ENV_FILE_NAME=environment.yml
|
34 |
| -ENV ENV_NAME="diffdock-pocket" |
35 | 21 | COPY --chown=$APPUSER:$APPUSER ./$ENV_FILE_NAME .
|
| 22 | +RUN ~/bin/micromamba env create --file $ENV_FILE_NAME && ~/bin/micromamba clean -afy --quiet |
36 | 23 |
|
37 |
| -RUN ~/bin/micromamba env create --file $ENV_FILE_NAME && ~/bin/micromamba clean -afy |
38 |
| - |
| 24 | +# Copy application code |
39 | 25 | COPY --chown=$APPUSER:$APPUSER . $HOME/DiffDock-Pocket
|
40 | 26 |
|
| 27 | +# Stage 2: Runtime Environment |
| 28 | +FROM nvidia/cuda:11.7.1-runtime-ubuntu22.04 |
| 29 | + |
| 30 | +# Create user and setup environment |
| 31 | +ENV APPUSER="appuser" |
| 32 | +ENV HOME=/home/$APPUSER |
| 33 | +RUN useradd -m -u 1000 $APPUSER |
| 34 | +USER $APPUSER |
| 35 | +WORKDIR $HOME |
| 36 | + |
| 37 | +ENV ENV_NAME="diffdock-pocket" |
| 38 | + |
| 39 | +# Copy the Conda environment and application code from the builder stage |
| 40 | +COPY --from=builder --chown=$APPUSER:$APPUSER $HOME/micromamba $HOME/micromamba |
| 41 | +COPY --from=builder --chown=$APPUSER:$APPUSER $HOME/bin $HOME/bin |
| 42 | +COPY --from=builder --chown=$APPUSER:$APPUSER $HOME/DiffDock-Pocket $HOME/DiffDock-Pocket |
41 | 43 | WORKDIR $HOME/DiffDock-Pocket
|
42 | 44 |
|
43 |
| -# Expose default streamlit and gradio ports |
| 45 | +# Set the environment variables |
| 46 | +ENV MAMBA_ROOT_PREFIX=$HOME/micromamba |
| 47 | +ENV PATH=$HOME/bin:$HOME/.local/bin:$PATH |
| 48 | +RUN micromamba shell init -s bash --root-prefix $MAMBA_ROOT_PREFIX |
| 49 | + |
| 50 | +# Expose ports for streamlit and gradio |
44 | 51 | EXPOSE 7860 8501
|
45 | 52 |
|
46 |
| -# Default command just prints the device (CPU or GPU), also ensure using correct python |
| 53 | +# Default command |
47 | 54 | CMD ["sh", "-c", "micromamba run -n ${ENV_NAME} python utils/print_device.py"]
|
0 commit comments