如何将环境 yaml 中的包安装到 micromamba docker 基础镜像中?

问题描述 投票:0回答:1

我正在尝试使用 qiime2-amplicon-2024.2 发行版构建具有特定卷安装位置的自定义 Docker 容器。

这是我的 docker 文件:

FROM mambaorg/micromamba:1.5.6

SHELL ["/usr/local/bin/_dockerfile_shell.sh"]

WORKDIR /tmp/

# Data
USER root
RUN mkdir -p /volumes/
RUN mkdir -p /volumes/input
RUN mkdir -p /volumes/output
RUN mkdir -p /volumes/database

# Retrieve repository
USER $MAMBA_USER
RUN micromamba install -y -n base -c conda-forge wget
ARG MAMBA_DOCKERFILE_ACTIVATE=1
RUN wget https://data.qiime2.org/distro/amplicon/qiime2-amplicon-2024.2-py38-linux-conda.yml

# Install dependencies
RUN micromamba install -y -n base -f /tmp/qiime2-amplicon-2024.2-py38-linux-conda.yml && \
    micromamba clean -a -y -f

RUN rm -rf /tmp/qiime2-amplicon-2024.2-py38-linux-conda.yml

ENTRYPOINT ["/usr/local/bin/_entrypoint.sh"]

但是,我遇到了这样的错误:

(base) Joshs-MBP:Containers jolespin$ docker build -t jolespin/qiime2-amplicon:2024.2 -f Dockerfile_qiime2-amplicon-2024.2 .
[+] Building 7.3s (13/14)                                                                                                          docker:desktop-linux
 => [internal] load build definition from Dockerfile_qiime2-amplicon-2024.2                                                                        0.0s
 => => transferring dockerfile: 1.34kB                                                                                                             0.0s
 => [internal] load metadata for docker.io/mambaorg/micromamba:1.5.6                                                                               0.8s
 => [auth] mambaorg/micromamba:pull token for registry-1.docker.io                                                                                 0.0s
 => [internal] load .dockerignore                                                                                                                  0.0s
 => => transferring context: 2B                                                                                                                    0.0s
 => [ 1/10] FROM docker.io/mambaorg/micromamba:1.5.6@sha256:4d9619e648abe569fd72fa30011c22bab13dd8494a7745295f512303de048989                       0.0s
 => CACHED [ 2/10] WORKDIR /tmp/                                                                                                                   0.0s
 => CACHED [ 3/10] RUN mkdir -p /volumes/                                                                                                          0.0s
 => CACHED [ 4/10] RUN mkdir -p /volumes/input                                                                                                     0.0s
 => CACHED [ 5/10] RUN mkdir -p /volumes/output                                                                                                    0.0s
 => CACHED [ 6/10] RUN mkdir -p /volumes/database                                                                                                  0.0s
 => CACHED [ 7/10] RUN micromamba install -y -n base -c conda-forge wget                                                                           0.0s
 => CACHED [ 8/10] RUN wget https://data.qiime2.org/distro/amplicon/qiime2-amplicon-2024.2-py38-linux-conda.yml                                    0.0s
 => ERROR [ 9/10] RUN micromamba install -y -n base -c qiime2 -c conda-forge -c bioconda -f /tmp/qiime2-amplicon-2024.2-py38-linux-conda.yml &&    6.5s
------
 > [ 9/10] RUN micromamba install -y -n base -c qiime2 -c conda-forge -c bioconda -f /tmp/qiime2-amplicon-2024.2-py38-linux-conda.yml &&     micromamba clean -a -y -f:
0.184 conda-forge/linux-aarch64                                   Using cache
0.184 conda-forge/noarch                                          Using cache
6.484 error    libmamba Could not solve for environment specs
6.484     The following packages are incompatible
6.484     ├─ alsa-lib 1.2.8**  is requested and can be installed;
6.484     ├─ bioconductor-ancombc 2.0.1**  is not installable because it requires
6.484     │  └─ bioconductor-s4vectors >=0.36.0,<0.37.0 , which does not exist (perhaps a missing channel);
6.484     ├─ bioconductor-beachmat 2.14.0**  does not exist (perhaps a typo or a missing channel);
6.484     ├─ bioconductor-biobase 2.58.0**  does not exist (perhaps a typo or a missing channel);

我尝试手动将通道添加到 condarc,但仍然不起作用:

#RUN echo "channel_priority: flexible" >> ~/.condarc
#RUN echo "channels:" >> ~/.condarc
#RUN echo "  - qiime2" >> ~/.condarc
#RUN echo "  - conda-forge" >> ~/.condarc
#RUN echo "  - bioconda" >> ~/.condarc

有什么建议吗?

我在这里看到这个 Dockerfile,但 miniconda 比 micromamba 大得多:https://github.com/qiime2/vm-playbooks/blob/master/docker/Dockerfile

docker containers conda micromamba
1个回答
0
投票

这对我有用:

# v2024.3.4
# =============================
FROM --platform=linux/amd64 mambaorg/micromamba:1.5.6

SHELL ["/usr/local/bin/_dockerfile_shell.sh"]

WORKDIR /tmp/

# Data
USER root
RUN mkdir -p /volumes/
RUN mkdir -p /volumes/input
RUN mkdir -p /volumes/output
RUN mkdir -p /volumes/database

ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8
ENV MPLBACKEND agg
ENV XDG_CONFIG_HOME /home/qiime2


# Retrieve repository
USER $MAMBA_USER
RUN micromamba install -y -n base -c conda-forge wget ca-certificates

ARG MAMBA_DOCKERFILE_ACTIVATE=1
RUN wget --no-check-certificate https://data.qiime2.org/distro/amplicon/qiime2-amplicon-2024.2-py38-linux-conda.yml

# Install dependencies
RUN micromamba install -y -n base \
    -c https://packages.qiime2.org/qiime2/2024.2/amplicon/released \
    -c bioconda \
    -c conda-forge \
    -c defaults \
    -f /tmp/qiime2-amplicon-2024.2-py38-linux-conda.yml && \ 
    micromamba clean -a -y -f

RUN rm -rf /tmp/qiime2-amplicon-2024.2-py38-linux-conda.yml
# RUN qiime dev refresh-cache


ENTRYPOINT ["/usr/local/bin/_entrypoint.sh"]

但是,我必须删除

qiime dev refresh-cache
,因为仅运行该步骤就需要一天多的时间。

micromamba 安装有点小,但没有我想象的那么大,与 5.92GB 相比,它是 5.13GB。

© www.soinside.com 2019 - 2024. All rights reserved.