在 docker-compose(UBUNTU 20.04) 期间尝试访问容器中的文件时权限被拒绝

Permission denied while trying to access files in container during docker-compose(UBUNTU 20.04)

我正在尝试处理一个涉及使用 rasa 的项目,当我 运行 sudo docker-compose up 时,出现以下错误。

Starting ask-my-doctor_rasa_1  ... done
Attaching to ask-my-doctor_ngrok_1, ask-my-doctor_rasa_1
rasa_1   | bash: line 15: /app/credentials.yml: Permission denied
rasa_1   | bash: line 16: /app/train_logs.txt: Permission denied
rasa_1   | bash: line 17: /app/run_actions_logs.txt: Permission denied
rasa_1   | 2021-06-07 14:02:52 DEBUG    rasa.telemetry  - Could not read telemetry settings from configuration file: Configuration 'metrics' key not found.
rasa_1   | 2021-06-07 14:02:52 WARNING  rasa.utils.common  - Failed to write global config. Error: [Errno 13] Permission denied: '/.config'. Skipping.
rasa_1   | 2021-06-07 14:02:53 DEBUG    rasa.cli.run  - 'models' not found. Using default location 'models' instead.
rasa_1   | Traceback (most recent call last):
rasa_1   |   File "/opt/venv/bin/rasa", line 8, in <module>
rasa_1   |     sys.exit(main())
rasa_1   |   File "/opt/venv/lib/python3.8/site-packages/rasa/__main__.py", line 117, in main
rasa_1   |     cmdline_arguments.func(cmdline_arguments)
rasa_1   |   File "/opt/venv/lib/python3.8/site-packages/rasa/cli/run.py", line 118, in run
rasa_1   |     args.model = _validate_model_path(args.model, "model", DEFAULT_MODELS_PATH)
rasa_1   |   File "/opt/venv/lib/python3.8/site-packages/rasa/cli/run.py", line 71, in _validate_model_path
rasa_1   |     os.makedirs(default, exist_ok=True)
rasa_1   |   File "/usr/lib/python3.8/os.py", line 223, in makedirs
rasa_1   |     mkdir(name, mode)
rasa_1   | PermissionError: [Errno 13] Permission denied: 'models'
ask-my-doctor_rasa_1 exited with code 1

我也曾尝试只保留容器 运行ning 并尝试登录并创建一个文件以进行检查,但我也收到了“权限被拒绝”的消息。

如何解决这个权限问题?

如有任何帮助,我们将不胜感激。

当使用 docker-compose 方法 运行 Rasa 时,多个文件夹将被装载到容器中。

怀疑是挂载目录的组和权限不对

你能试试这个吗:

# Go to root folder of your deployment folder.
# Default is /etc/rasa, but from your error image, I see it is different.
cd ~/Project/ask-my-doctor

# Set group & permissions for everything in that folder
sudo chgrp -R root * && sudo chmod -R 770 *

# Correct group & permissions for the database
sudo chown -R 1001 db && sudo chmod -R 750 /db

这些步骤的详细说明可以在 rasa docs 中找到,对于 Linux/macOS 用户:

Rasa 容器遵循 Docker 的最佳实践,而不是 运行宁作为 root 用户。因此,请确保 root 组对以下目录及其内容具有读写权限:

  • /etc/rasa/credentials.yml
  • /etc/rasa/endpoints.yml
  • /etc/rasa/environments.yml
  • /etc/rasa/auth
  • /etc/rasa/certs
  • /etc/rasa/credentials
  • /etc/rasa/models
  • /etc/rasa/logs

要为 /etc/rasa 中的所有内容设置权限和组,您可以使用此命令,但请确保按照下一步所述为 /etc/rasa/db 目录更正它:

sudo chgrp -R root /etc/rasa/* && sudo chmod -R 770 /etc/rasa/*

如果您要安装不同的或额外的目录,请相应地调整它们的权限。

Postgres 数据库存储 配置持久性 Postgres 数据库存储

在 Linux 上,本地目录用于持久性 Postgres 数据库存储。 您必须使用此命令设置数据库持久目录的正确所有者和权限:

sudo chown -R 1001 /etc/rasa/db && sudo chmod -R 750 /etc/rasa/db