Permission denied when adding dependencies from rasa/rasa-sdk dockerfile

Hey, I’m trying to add mysql-connector from rasa/rasa-sdk dockerfile as explain in the documentation:

FROM rasa/rasa-sdk:latest

# Proxy configuration
ENV http_proxy='http://<hostname>:<pwd>@<proxy-name>:<proxy-port>'
ENV https_proxy='https://<hostname>:<pwd>@<proxy-name>:<proxy-port>'

RUN pip install --no-cache-dir mysql-connector

But an error appear during the installation of mysql-connector package “Permission Denied” :

root@localhost:/etc/rasa/directory_dockerfile/rasa-sdk# docker build -t rasa-sdk/custom .
Sending build context to Docker daemon  2.048kB
Step 1/5 : FROM rasa/rasa-sdk:latest
 ---> c61d7c94d9be
Step 2/5 : ENV http_proxy='http://<hostname>:<pwd>@<poxy-name>:<proxy-port>'
 ---> Using cache
 ---> cf4c122ef846
Step 3/5 : ENV https_proxy='http://<hostname>:<pwd>@<poxy-name>:<proxy-port>'
 ---> Using cache
 ---> 88f332afcbe8
Step 4/5 : ENV no_proxy='localhost,127.0.0.1'
 ---> Using cache
 ---> b583bdc86b97
Step 5/5 : RUN python -m pip install --no-cache-dir mysql-connector
 ---> Running in 106457332dad
Collecting mysql-connector
  Downloading mysql-connector-2.2.9.tar.gz (11.9 MB)
Installing collected packages: mysql-connector
    Running setup.py install for mysql-connector: started
    Running setup.py install for mysql-connector: finished with status 'error'
    ERROR: Command errored out with exit status 1:
     command: /opt/venv/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-3estt7tg/mysql-connector/setup.py'"'"'; __file__='"'"'/tmp/pip-install-3estt7tg/mysql-connector/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-g36l5q0h/install-record.txt --single-version-externally-managed --compile --install-headers /opt/venv/include/site/python3.6/mysql-connector
         cwd: /tmp/pip-install-3estt7tg/mysql-connector/
    Complete output (88 lines):
    running install
    Not Installing C Extension
    running build
    running build_py
    creating build
    creating build/lib
    creating build/lib/mysql
    copying lib/mysql/__init__.py -> build/lib/mysql
    creating build/lib/mysql/connector
    copying lib/mysql/connector/errorcode.py -> build/lib/mysql/connector
    copying lib/mysql/connector/utils.py -> build/lib/mysql/connector
    copying lib/mysql/connector/abstracts.py -> build/lib/mysql/connector
    copying lib/mysql/connector/cursor_cext.py -> build/lib/mysql/connector
    copying lib/mysql/connector/optionfiles.py -> build/lib/mysql/connector
    copying lib/mysql/connector/custom_types.py -> build/lib/mysql/connector
    copying lib/mysql/connector/pooling.py -> build/lib/mysql/connector
    copying lib/mysql/connector/network.py -> build/lib/mysql/connector
    copying lib/mysql/connector/__init__.py -> build/lib/mysql/connector
    copying lib/mysql/connector/charsets.py -> build/lib/mysql/connector
    copying lib/mysql/connector/dbapi.py -> build/lib/mysql/connector
    copying lib/mysql/connector/protocol.py -> build/lib/mysql/connector
    copying lib/mysql/connector/conversion.py -> build/lib/mysql/connector
    copying lib/mysql/connector/authentication.py -> build/lib/mysql/connector
    copying lib/mysql/connector/connection.py -> build/lib/mysql/connector
    copying lib/mysql/connector/constants.py -> build/lib/mysql/connector
    copying lib/mysql/connector/connection_cext.py -> build/lib/mysql/connector
    copying lib/mysql/connector/catch23.py -> build/lib/mysql/connector
    copying lib/mysql/connector/errors.py -> build/lib/mysql/connector
    copying lib/mysql/connector/cursor.py -> build/lib/mysql/connector
    copying lib/mysql/connector/version.py -> build/lib/mysql/connector
    creating build/lib/mysql/connector/locales
    copying lib/mysql/connector/locales/__init__.py -> build/lib/mysql/connector/locales
    creating build/lib/mysql/connector/locales/eng
    copying lib/mysql/connector/locales/eng/client_error.py -> build/lib/mysql/connector/locales/eng
    copying lib/mysql/connector/locales/eng/__init__.py -> build/lib/mysql/connector/locales/eng
    creating build/lib/mysql/connector/django
    copying lib/mysql/connector/django/features.py -> build/lib/mysql/connector/django
    copying lib/mysql/connector/django/validation.py -> build/lib/mysql/connector/django
    copying lib/mysql/connector/django/client.py -> build/lib/mysql/connector/django
    copying lib/mysql/connector/django/schema.py -> build/lib/mysql/connector/django
    copying lib/mysql/connector/django/compiler.py -> build/lib/mysql/connector/django
    copying lib/mysql/connector/django/__init__.py -> build/lib/mysql/connector/django
    copying lib/mysql/connector/django/creation.py -> build/lib/mysql/connector/django
    copying lib/mysql/connector/django/base.py -> build/lib/mysql/connector/django
    copying lib/mysql/connector/django/introspection.py -> build/lib/mysql/connector/django
    copying lib/mysql/connector/django/operations.py -> build/lib/mysql/connector/django
    creating build/lib/mysql/connector/fabric
    copying lib/mysql/connector/fabric/__init__.py -> build/lib/mysql/connector/fabric
    copying lib/mysql/connector/fabric/balancing.py -> build/lib/mysql/connector/fabric
    copying lib/mysql/connector/fabric/connection.py -> build/lib/mysql/connector/fabric
    copying lib/mysql/connector/fabric/caching.py -> build/lib/mysql/connector/fabric
    creating build/lib/mysqlx
    copying lib/mysqlx/errorcode.py -> build/lib/mysqlx
    copying lib/mysqlx/statement.py -> build/lib/mysqlx
    copying lib/mysqlx/crud.py -> build/lib/mysqlx
    copying lib/mysqlx/result.py -> build/lib/mysqlx
    copying lib/mysqlx/compat.py -> build/lib/mysqlx
    copying lib/mysqlx/__init__.py -> build/lib/mysqlx
    copying lib/mysqlx/charsets.py -> build/lib/mysqlx
    copying lib/mysqlx/protocol.py -> build/lib/mysqlx
    copying lib/mysqlx/expr_unparser.py -> build/lib/mysqlx
    copying lib/mysqlx/authentication.py -> build/lib/mysqlx
    copying lib/mysqlx/connection.py -> build/lib/mysqlx
    copying lib/mysqlx/dbdoc.py -> build/lib/mysqlx
    copying lib/mysqlx/constants.py -> build/lib/mysqlx
    copying lib/mysqlx/errors.py -> build/lib/mysqlx
    copying lib/mysqlx/expr.py -> build/lib/mysqlx
    creating build/lib/mysqlx/locales
    copying lib/mysqlx/locales/__init__.py -> build/lib/mysqlx/locales
    creating build/lib/mysqlx/locales/eng
    copying lib/mysqlx/locales/eng/client_error.py -> build/lib/mysqlx/locales/eng
    copying lib/mysqlx/locales/eng/__init__.py -> build/lib/mysqlx/locales/eng
    creating build/lib/mysqlx/protobuf
    copying lib/mysqlx/protobuf/mysqlx_session_pb2.py -> build/lib/mysqlx/protobuf
    copying lib/mysqlx/protobuf/t.py -> build/lib/mysqlx/protobuf
    copying lib/mysqlx/protobuf/mysqlx_expect_pb2.py -> build/lib/mysqlx/protobuf
    copying lib/mysqlx/protobuf/mysqlx_connection_pb2.py -> build/lib/mysqlx/protobuf
    copying lib/mysqlx/protobuf/mysqlx_notice_pb2.py -> build/lib/mysqlx/protobuf
    copying lib/mysqlx/protobuf/mysqlx_sql_pb2.py -> build/lib/mysqlx/protobuf
    copying lib/mysqlx/protobuf/__init__.py -> build/lib/mysqlx/protobuf
    copying lib/mysqlx/protobuf/mysqlx_expr_pb2.py -> build/lib/mysqlx/protobuf
    copying lib/mysqlx/protobuf/mysqlx_resultset_pb2.py -> build/lib/mysqlx/protobuf
    copying lib/mysqlx/protobuf/mysqlx_crud_pb2.py -> build/lib/mysqlx/protobuf
    copying lib/mysqlx/protobuf/mysqlx_pb2.py -> build/lib/mysqlx/protobuf
    copying lib/mysqlx/protobuf/mysqlx_datatypes_pb2.py -> build/lib/mysqlx/protobuf
    running install_lib
    creating /opt/venv/lib/python3.6/site-packages/mysqlx
    error: could not create '/opt/venv/lib/python3.6/site-packages/mysqlx': Permission denied
    ----------------------------------------
ERROR: Command errored out with exit status 1: /opt/venv/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-3estt7tg/mysql-connector/setup.py'"'"'; __file__='"'"'/tmp/pip-install-3estt7tg/mysql-connector/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-g36l5q0h/install-record.txt --single-version-externally-managed --compile --install-headers /opt/venv/include/site/python3.6/mysql-connector Check the logs for full command output.
The command '/bin/bash -o pipefail -c python -m pip install --no-cache-dir mysql-connector' returned a non-zero code: 1

It’s the same thing when i run “apt-get update”. How i can resolve this problem ?

  • Please don’t use the latest tag but rather pin to a version.
  • try adding the line User root before you do pip install (this is required since the new Rasa SDK image does not run as root anymore)

Thx and i found other solution :

I execute the container with this command :

docker run -it -u 0 rasa/rasa-sdk

In the container, i run the commande pip install [package name]. After I generate new docker image with docker commit and it work as well.