我正在尝试在使用 M2 处理器的 MacBook Pro 上构建 docker 映像。我已经在我之前使用 Intel 处理器的 MacBook Pro 上多次使用此 Dockerfile 创建了图像。
我目前正在运行 iTerm2 w/ Rosetta 来模拟英特尔处理器。
$ arch
i386
这是我的构建命令:
docker build --build-arg ENV_NAME=${ENV_NAME} -t ${TAG} -f Dockerfile ../../
这是我的 Dockerfile:
# v2024.3.10
# =================================
FROM --platform=linux/amd64 mambaorg/micromamba:latest
ARG ENV_NAME
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 VEBA repository
RUN mkdir -p veba/
USER $MAMBA_USER
COPY --chown=$MAMBA_USER:$MAMBA_USER ./install/ veba/install/
COPY --chown=$MAMBA_USER:$MAMBA_USER ./bin/ veba/bin/
COPY --chown=$MAMBA_USER:$MAMBA_USER ./VERSION veba/VERSION
COPY --chown=$MAMBA_USER:$MAMBA_USER ./LICENSE veba/LICENSE
# Fix:
# critical libmamba Download error (28) Timeout was reached
# [https://conda.anaconda.org/bioconda/linux-64/blast-2.13.0-hf3cf87c_0.tar.bz2]
# Operation too slow. Less than 30 bytes/sec transferred the last 60 seconds
ARG MAMBA_NO_LOW_SPEED_LIMIT=1
# Build .condarc
RUN echo "channel_priority: flexible" >> ~/.condarc
RUN echo "channels:" >> ~/.condarc
RUN echo " - conda-forge" >> ~/.condarc
RUN echo " - bioconda" >> ~/.condarc
RUN echo " - jolespin" >> ~/.condarc
# Install dependencies
RUN micromamba install -y -n base -f veba/install/environments/${ENV_NAME}.yml && \
micromamba clean -a -y -f
# Add environment scripts to environment bin
RUN cp -rf veba/bin/* /opt/conda/bin/ && \
ln -sf /opt/conda/bin/scripts/*.py /opt/conda/bin/ && \
ln -sf /opt/conda/bin/scripts/*.r /opt/conda/bin/
ENTRYPOINT ["/usr/local/bin/_entrypoint.sh"]
我也在没有 Rosetta 的终端中尝试过这个:
$ arch
arm64
最奇怪的部分是我昨晚能够从这个 conda 环境 yaml 构建图像,但现在它不起作用。我正在构建的 Docker 映像的完整列表使用以下 yaml 文件:https://github.com/jolespin/veba/tree/main/install/environments
有人知道如何在 Apple Silicon 上构建这些 Docker 镜像吗?