【发布时间】: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