|
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