forked from openKinetics/webKinPred
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile.envs
More file actions
154 lines (131 loc) · 7.91 KB
/
Dockerfile.envs
File metadata and controls
154 lines (131 loc) · 7.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# syntax=docker/dockerfile:1.4
# One-time (or rare) build for the shared conda environment image.
# Build and tag this image once, then regular worker deploys reuse it.
FROM ubuntu:22.04 AS base
WORKDIR /app
ENV DEBIAN_FRONTEND=noninteractive \
PYTHONUNBUFFERED=1 \
PATH="/opt/conda/bin:$PATH"
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
curl \
wget \
libgomp1 \
python3 \
python3-pip \
python3-dev \
&& rm -rf /var/lib/apt/lists/*
RUN wget -q https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \
-O /tmp/miniconda.sh \
&& bash /tmp/miniconda.sh -b -p /opt/conda \
&& rm /tmp/miniconda.sh \
&& /opt/conda/bin/conda config --set always_yes yes \
&& /opt/conda/bin/conda config --add channels conda-forge \
&& /opt/conda/bin/conda config --set channel_priority strict \
&& /opt/conda/bin/conda tos accept --channel https://repo.anaconda.com/pkgs/main \
&& /opt/conda/bin/conda tos accept --channel https://repo.anaconda.com/pkgs/r \
&& /opt/conda/bin/conda install -n base -c conda-forge mamba -y \
&& /opt/conda/bin/conda clean -afy
FROM base AS env-kinform
COPY docker-requirements/kinform_requirements.txt ./docker-requirements/
RUN --mount=type=cache,target=/opt/conda/pkgs,sharing=locked \
--mount=type=cache,id=webkinpred-pip-py312,target=/root/.cache/pip,sharing=locked \
mamba create -n kinform_env python=3.12 -c conda-forge -y \
&& conda run -n kinform_env pip install -r docker-requirements/kinform_requirements.txt
FROM base AS env-dlkcat
COPY docker-requirements/dlkcat_requirements.txt ./docker-requirements/
RUN --mount=type=cache,target=/opt/conda/pkgs,sharing=locked \
--mount=type=cache,id=webkinpred-pip-py37,target=/root/.cache/pip,sharing=locked \
mamba create -n dlkcat_env python=3.7.12 -c conda-forge -y \
&& mamba install -n dlkcat_env -c conda-forge --override-channels rdkit=2020.09.1 -y \
&& conda run -n dlkcat_env pip install -r docker-requirements/dlkcat_requirements.txt
FROM base AS env-eitlem
COPY docker-requirements/eitlem_requirements.txt ./docker-requirements/
RUN --mount=type=cache,target=/opt/conda/pkgs,sharing=locked \
--mount=type=cache,id=webkinpred-pip-py310,target=/root/.cache/pip,sharing=locked \
mamba create -n eitlem_env python=3.10.15 -c conda-forge -y \
&& conda run -n eitlem_env pip install -r docker-requirements/eitlem_requirements.txt
FROM base AS env-turnup
COPY docker-requirements/turnup_requirements.txt ./docker-requirements/
RUN --mount=type=cache,target=/opt/conda/pkgs,sharing=locked \
--mount=type=cache,id=webkinpred-pip-py37,target=/root/.cache/pip,sharing=locked \
mamba create -n turnup_env python=3.7 -c conda-forge -y \
&& mamba install -n turnup_env -c conda-forge py-xgboost=1.6.1 -y \
&& conda run -n turnup_env pip install -r docker-requirements/turnup_requirements.txt
FROM base AS env-unikp
COPY docker-requirements/unikp_requirements.txt ./docker-requirements/
RUN --mount=type=cache,target=/opt/conda/pkgs,sharing=locked \
--mount=type=cache,id=webkinpred-pip-py37,target=/root/.cache/pip,sharing=locked \
mamba create -n unikp python=3.7.12 -c conda-forge -y \
&& conda run -n unikp pip install -r docker-requirements/unikp_requirements.txt \
&& conda run -n unikp pip install accelerate
FROM base AS env-catapro
COPY docker-requirements/catapro_requirements.txt ./docker-requirements/
RUN --mount=type=cache,target=/opt/conda/pkgs,sharing=locked \
--mount=type=cache,id=webkinpred-pip-py310,target=/root/.cache/pip,sharing=locked \
mamba create -n catapro_env python=3.10.15 -c conda-forge -y \
&& mamba install -n catapro_env -c conda-forge rdkit=2024.03.6 -y \
&& conda run -n catapro_env pip install -r docker-requirements/catapro_requirements.txt
FROM base AS env-catpred
COPY docker-requirements/catpred_requirements.txt ./docker-requirements/
RUN --mount=type=cache,target=/opt/conda/pkgs,sharing=locked \
--mount=type=cache,id=webkinpred-pip-py310,target=/root/.cache/pip,sharing=locked \
mamba create -n catpred_env python=3.10.15 -c conda-forge -y \
&& mamba install -n catpred_env -c conda-forge rdkit=2024.03.6 -y \
&& conda run -n catpred_env pip install -r docker-requirements/catpred_requirements.txt
FROM base AS env-mmisakm
COPY docker-requirements/mmisakm_requirements.txt ./docker-requirements/
RUN --mount=type=cache,target=/opt/conda/pkgs,sharing=locked \
--mount=type=cache,id=webkinpred-pip-py39,target=/root/.cache/pip,sharing=locked \
mamba create -n mmisakm_env python=3.9 -c conda-forge -y \
&& conda run -n mmisakm_env pip install -r docker-requirements/mmisakm_requirements.txt
FROM base AS env-omniesi
COPY docker-requirements/omniesi_requirements.txt ./docker-requirements/
RUN --mount=type=cache,target=/opt/conda/pkgs,sharing=locked \
--mount=type=cache,id=webkinpred-pip-py38,target=/root/.cache/pip,sharing=locked \
mamba create -n omniesi_env python=3.8 -c conda-forge -y \
&& conda run -n omniesi_env pip install -r docker-requirements/omniesi_requirements.txt
FROM base AS env-pseq2sites
RUN --mount=type=cache,target=/opt/conda/pkgs,sharing=locked \
--mount=type=cache,id=webkinpred-pip-py37,target=/root/.cache/pip,sharing=locked \
mamba create -n pseq2sites python=3.7.12 -c conda-forge -y \
&& conda run -n pseq2sites pip install --prefer-binary \
torch==1.7.1 numpy==1.20.0 transformers==4.30.2 sentencepiece==0.2.0 \
biopython==1.79 rdkit-pypi==2021.3.1 openbabel-wheel pandas tqdm
FROM base AS env-esm
RUN --mount=type=cache,target=/opt/conda/pkgs,sharing=locked \
--mount=type=cache,id=webkinpred-pip-py37,target=/root/.cache/pip,sharing=locked \
mamba create -n esm python=3.7 -c conda-forge -y \
&& conda run -n esm pip install torch fair-esm pandas tqdm
FROM base AS env-esmc
RUN --mount=type=cache,target=/opt/conda/pkgs,sharing=locked \
--mount=type=cache,id=webkinpred-pip-py312,target=/root/.cache/pip,sharing=locked \
mamba create -n esmc python=3.12 -c conda-forge -y \
&& conda run -n esmc pip install esm pandas tqdm
FROM base AS env-prot-t5
RUN --mount=type=cache,target=/opt/conda/pkgs,sharing=locked \
--mount=type=cache,id=webkinpred-pip-py39,target=/root/.cache/pip,sharing=locked \
mamba create -n prot_t5 python=3.9 -c conda-forge -y \
&& conda run -n prot_t5 pip install \
torch transformers sentencepiece pandas tqdm accelerate
FROM base AS env-mmseqs2
RUN --mount=type=cache,target=/opt/conda/pkgs,sharing=locked \
mamba create -n mmseqs2_env python=3.10 -c conda-forge -y \
&& mamba install -n mmseqs2_env -c bioconda mmseqs2=13.45111 -y
FROM base AS final
COPY --from=env-kinform /opt/conda/envs/kinform_env /opt/conda/envs/kinform_env
COPY --from=env-dlkcat /opt/conda/envs/dlkcat_env /opt/conda/envs/dlkcat_env
COPY --from=env-eitlem /opt/conda/envs/eitlem_env /opt/conda/envs/eitlem_env
COPY --from=env-turnup /opt/conda/envs/turnup_env /opt/conda/envs/turnup_env
COPY --from=env-unikp /opt/conda/envs/unikp /opt/conda/envs/unikp
COPY --from=env-catapro /opt/conda/envs/catapro_env /opt/conda/envs/catapro_env
COPY --from=env-catpred /opt/conda/envs/catpred_env /opt/conda/envs/catpred_env
COPY --from=env-mmisakm /opt/conda/envs/mmisakm_env /opt/conda/envs/mmisakm_env
COPY --from=env-omniesi /opt/conda/envs/omniesi_env /opt/conda/envs/omniesi_env
COPY --from=env-pseq2sites /opt/conda/envs/pseq2sites /opt/conda/envs/pseq2sites
COPY --from=env-esm /opt/conda/envs/esm /opt/conda/envs/esm
COPY --from=env-esmc /opt/conda/envs/esmc /opt/conda/envs/esmc
COPY --from=env-prot-t5 /opt/conda/envs/prot_t5 /opt/conda/envs/prot_t5
COPY --from=env-mmseqs2 /opt/conda/envs/mmseqs2_env /opt/conda/envs/mmseqs2_env
RUN find /opt/conda -name "*.pyc" -delete \
&& find /opt/conda -name "__pycache__" -type d -exec rm -rf {} + 2>/dev/null || true