Как установить pip-пакеты с помощью Dockerfile? Ошибка получения разрешений - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть следующий Dockerfile, который я использую для развертывания приложения Rasa Bot в Google App Engine:

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"]

Но при развертывании не удается установить пакеты phonenumbers и pgeocode, как-то не так у меня проблемы с расой.

Я получаю следующую ошибку:

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, как предлагалось, и в некоторых других вопросах я видел ответы, предлагающие использовать sudo с флагом -H, но это также дает сбой, с другой ошибкой, говорящей о том, что sudo не распознан.

Если я удаляю эти 2 сбойных пакета, мое приложение запускается, за исключением того, что оно может ' t выполнить некоторые действия, для которых нужны эти пакеты.

Есть идеи, как мне это решить?

Спасибо!

1 Ответ

2 голосов
/ 21 февраля 2020

Вы используете базовый образ rasa/rasa, поэтому rasa уже установлен или успешно устанавливается.

Документация для этого образа предлагает использовать --no-cache-dir flag:

RUN pip install --no-cache-dir jupyter

Вы также можете попробовать запустить свои команды Dockerfile как пользователь root, выполнив:

FROM rasa/rasa
USER root
...