python - spaCy 和 Docker:不能“dockerize”使用 spaCy 模块的 Flask 应用程序
问题描述
我正在尝试在我的 docker 映像上安装 SpaCy,但它总是失败。首先它在我的 requirements.txt 文件中,但它立即失败了。后来我尝试为 pip 运行单独的 RUN 指令以单独安装它,但它也失败了。
这是我的 Dockerfile 内容:
FROM python:3.6-alpine
WORKDIR /sentenceSimilarity
ADD . /sentenceSimilarity
RUN pip install -r requirements.txt
RUN pip install -U pip setuptools wheel
RUN pip install -U spacy
RUN python -m spacy download en_core_web_sm
CMD ["python", "app.py"]
我最终从我的 requirements.txt 文件中删除了除 Flask 之外的所有内容,问题总是偶然发现 Spacy 出现的那一行,现在唯一的区别是它需要很长时间才能失败。看截图:
稍微观察一下,我认为 pip 一直在迭代以检查哪个版本可能适合,从最新到最旧。但是最后没有一个被安装。
我见过其他人与 SpaCy 有类似问题,但没有明显的解决方案。
有人可以建议我可以用来解决此问题的方法吗?提前致谢。
解决方案
docker Github 问题中的spacy 安装非常慢FROM python:3.6-alpine
解释了 Alpine Python docker 的问题(我看到你的 dockerfile 中有):
如果您使用的是 Alpine Linux 容器,您可能不应该这样做:这对于 Python 来说是一个糟糕的选择,因为任何 PyPi 轮子都不起作用,因此您必须重新构建所有内容。如果您决定使用 Alpine Linux,您应该为自己配备一个操舵室,这样您就不必一直重建车轮。
因此,您需要使用另一个图像,例如@mkkeffeler 推荐的苗条 docker图像。
推荐阅读
- opencv - 如何在 LXC 容器中使用 OpenCV (Python) 访问网络摄像头
- oracle - 比较逻辑的语法帮助
- javascript - React 中的 Google 登录视图
- apache-spark - 如果我明确传递模式,是否需要在 spark 中使用“mergeSchema”选项和镶木地板?
- python - Python:我不确定为什么我的不和谐机器人代码会出现此错误
- node.js - Node中的简单缓冲双工流 - 如何?
- javascript - 在任何网页上获取点击的元素
- javascript - NextJS 的持续关注
- erlang - Elixir/Erlang :gen_udp 伪标头
- ruby-on-rails - Rails:我想嵌套一个具有 nn 关系的路由来获取两个参数