【问题标题】:Build Error on apple silicon M1 with docker使用 docker 在苹果硅 M1 上构建错误
【发布时间】:2022-08-16 23:54:58
【问题描述】:


我试图在我的 M1 上使用第三方 cli (plastimatch) 对烧瓶应用程序进行 dockerize。
我使用 ubuntu:18.04 作为基础镜像。较新版本的构建将失败,并显示错误消息“未找到安装候选者”。我注意到的第一件奇怪的事情是完全相同的构建会在 linux 服务器上成功。

我使用本地 venv 来完成应用程序,当我开始对所有内容进行 dockerize 处理时,我收到以下错误:

#16 22.37 注意:此错误源自子进程,可能不是 pip 的问题。
#16 22.37 错误:pylibjpeg-libjpeg 的构建轮失败
#16 22.37 无法构建 pylibjpeg-openjpeg pylibjpeg-libjpeg
#16 22.37 错误:无法为 pylibjpeg-openjpeg、pylibjpeg-libjpeg 构建轮子,这是安装基于 pyproject.toml 的项目所必需的

这些 python 包是处理图像的不同 C++ 库的包装器。本地构建失败,我们的 linux 服务器上的构建运行良好。

在开发中本地化应用程序时,有没有人注意到类似的问题?有什么解决办法吗?

这里是使用的 Dockerfile 和 requirements.txt 的参考(目前缺少特定版本):

FROM ubuntu:18.04 as base

RUN  apt-get update -y && apt-get install -y && apt-get upgrade -y

RUN apt-get install -y software-properties-common
RUN add-apt-repository ppa:deadsnakes/ppa
RUN apt-get install -y python3.8 python3-pip
RUN rm /usr/bin/python3 && ln -s /usr/bin/python3.8 /usr/bin/python3

RUN apt-get install -y \\
    plastimatch \\
    zlib1g \\
    cmake

WORKDIR /app

COPY requirements.txt requirements.txt
RUN python3 -m pip install -U --force-reinstall pip
RUN pip3 install --upgrade pip setuptools wheel
RUN pip3 install -r requirements.txt
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8

FROM base as upload-dev
RUN echo \"Building dev version\"
COPY requirements_dev.txt requirements_dev.txt
RUN pip3 install -r requirements_dev.txt
COPY . .
python-dotenv
cython
pynrrd
flask-cors
Flask
Werkzeug
httplib2
numpy
pydicom
highdicom
dicomweb-client

更新:2022 年 7 月 1 日

我可以追踪错误。 问题是一些第三方库缺少轮子。如果找不到轮子,则编译器将获取并安装源代码。在安装以 C++ 为核心的库期间,这在我的机器上崩溃了。 解决此问题的一种简单方法是直接使用 linux AMD64 映像。

FROM --platform=linux/amd64 $YOUR_BASE_IMAGE

这会有点慢,但对于大多数开发环境来说已经足够了。 详解:https://pythonspeed.com/articles/docker-build-problems-mac/

    标签: python docker ubuntu-18.04 apple-silicon


    【解决方案1】:

    对我来说,解决方法是安装 Rosetta 2,它包含在 Docker 文档中:https://docs.docker.com/desktop/mac/apple-silicon/#system-requirements

    softwareupdate --install-rosetta
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-02-09
      • 1970-01-01
      • 2021-09-08
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 2021-06-12
      • 2021-08-17
      相关资源
      最近更新 更多