在 docker-compose 期间尝试访问容器中的文件时权限被拒绝(UBUNTU 20.04)
Posted
技术标签:
【中文标题】在 docker-compose 期间尝试访问容器中的文件时权限被拒绝(UBUNTU 20.04)【英文标题】:Permission denied while trying to access files in container during docker-compose(UBUNTU 20.04) 【发布时间】:2021-08-23 16:55:14 【问题描述】:我正在尝试一个涉及使用 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
我还尝试让容器保持运行,并尝试登录并创建一个文件来检查,在那里我也收到“权限被拒绝”消息。
如何解决这个权限问题?
任何帮助将不胜感激。
【问题讨论】:
请把 docker-compose 文件和 dockerfile 发给你。 错误也需要直接包含在问题中(不是链接后面)和文本(不是图像)。 当然@DavidMaze 会做 【参考方案1】:使用 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
中的所有内容设置权限和组,您可以使用此命令,但请确保为/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
【讨论】:
这就像一个魅力。我不知道如何授予必要的权限。感谢您的帮助。 @Nikhilv.h。您可以将其标记为已接受的答案吗?顺便说一句,好问题。以上是关于在 docker-compose 期间尝试访问容器中的文件时权限被拒绝(UBUNTU 20.04)的主要内容,如果未能解决你的问题,请参考以下文章
Docker:在 Tomcat 镜像构建期间访问 MySQL 容器
docker-compose mysql 容器拒绝访问 wordpress 容器
构建 docker-compose 镜像并将其推送到容器注册表中
无法使用nginx-proxy和dnsmasq在带有docker-compose的容器之间访问虚拟主机