【问题标题】:How to install pip packages with Dockerfile? Getting permission restrictions error如何使用 Dockerfile 安装 pip 包?获取权限限制错误
【发布时间】:2020-02-21 19:40:14
【问题描述】:

我有以下 Dockerfile,用于在 Google 的 App Engine 上部署 Rasa Bot 应用程序:

FROM rasa/rasa
ENV BOT_ENV=development
COPY . /var/www
WORKDIR /var/www
RUN pip install rasa phonenumbers pgeocode
#ENTRYPOINT ["rasa", "run", "-vv", "--enable-api", "actions"]
ENTRYPOINT ["rasa", "run", "-vv", "--enable-api", "--endpoints", "endpoints.yml", "--credentials", "credentials.yml", "-p", "8080"]

但部署无法安装phonenumberspgeocode 包,不知怎的,rasa 没有问题。

我得到的错误是这样的:

ERROR: Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/build/lib/python3.6/site-packages/phonenumbers'
Consider using the `--user` option or check the permissions.

The command '/bin/sh -c pip install rasa phonenumbers pgeocode' returned a non-zero code: 1
ERROR
ERROR: build step 0 "gcr.io/cloud-builders/docker" failed: step exited with non-zero status: 1

我已尝试按照建议使用 --user,在其他一些问题中,我看到建议使用带有 -H 标志的 sudo 的答案,但这也失败了,另一个错误表明 sudo 不是认可。

如果我删除这 2 个失败的包,我的应用程序会运行,但它无法执行需要这些包的某些操作。

知道如何解决这个问题吗?

谢谢!

【问题讨论】:

  • 使用--user时请附上失败信息。
  • 我不认为 sudo 是默认安装在 debian 上的,这就是这个图像使用的。你可以试试安装。您可能还想尝试将USER 0 添加到 dockerfile 中,这表示使用 root 用户,该用户应具有完全权限。

标签: python google-app-engine google-cloud-platform dockerfile rasa


【解决方案1】:

您正在使用rasa/rasa 基础映像,这就是rasa 已安装或安装成功的原因。

documentation for this image 建议使用--no-cache-dir 标志:

RUN pip install --no-cache-dir jupyter

您也可以尝试以 root 用户身份运行 Dockerfile 命令:

FROM rasa/rasa
USER root

【讨论】:

  • 我尝试了第一个建议,但得到了同样的错误。添加USER root 修复它。谢谢!
【解决方案2】:

USER root 也为我工作。对于未来的人,不要忘记按照 http://redhatgov.io/workshops/security_containers/exercise1.2/

即: 用户根 ... USER 1001(或任何你想要的用户)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 2016-07-11
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多