Создаем DockerFile
Выбираем базовый образ
Добавляем conda
:
RUN apt update && \
apt install -y curl gpg && \
curl https://repo.anaconda.com/pkgs/misc/gpgkeys/anaconda.asc | \
gpg --dearmor > /etc/apt/trusted.gpg.d/anaconda.gpg && \
echo 'deb https://repo.anaconda.com/pkgs/misc/debrepo/conda stable main' > /etc/apt/sources.list.d/conda.list && \
apt update && \
apt install -y conda graphviz && \
touch ~/.bashrc && \
/opt/conda/bin/conda init bash
Создаем окружение и устанавливаем основные зависимости:
RUN . ~/.bashrc && \
conda install -y -n base -c conda-forge mamba && \
mamba create -y --name research python=3.10.6 && \
mamba install -y -n research -c conda-forge -c bioconda snakemake conda-build gcc git && \
mamba clean -ya
Создаем рабочую директорию
Устанавливаем poetry зависимости (опциональный шаг)
Сборка образа
Запуск контейнера
docker run -it --gpus all -v <path/to/project>:/workspace/project --name research research_image /bin/bash
Добавить запуск jupyter
#!/bin/bash
source /opt/conda/etc/profile.d/conda.sh
conda activate snakemake
# Run jupyetr lab
jupyter lab --ip 0.0.0.0 --port 8888 --no-browser --allow-root
Включить его в docker
ENV JUPYTER_TOKEN="password" \
PATH="/opt/conda/bin/conda:$PATH" \
SHELL="/bin/bash"
COPY docker/entrypoint.sh /opt/docker/bin/entrypoint.sh
ENTRYPOINT [ "/bin/bash", "/opt/docker/bin/entrypoint.sh" ]
Подключиться из vscode
Dev containers > Attach to Running Container > research