gpt4 book ai didi

docker - 我运行docker-compose up后由于权限错误而无法编辑本地文件

转载 作者:行者123 更新时间:2023-12-02 19:05:21 25 4
gpt4 key购买 nike

我运行docker-compose up -d,然后ssh到容器中。我可以通过localhost加载站点,但是当我尝试在本地编辑源代码时,由于权限错误,它不允许我访问。这是容器vs本地上的ls -la输出:

容器:

enter image description here

本地:

enter image description here

我的dockerfile具有chown命令:

enter image description here

我的本地用户称为 pwm 。我尝试从主机运行chown -R pwm:pwm ../app,此时我可以编辑文件,但是随后出现laravel权限被拒绝的错误。然后,我需要再次运行chown -R www-data:www-data ../app进行修复。

我怎样才能解决这个问题?

最佳答案

对于开发环境,我的最佳解决方案是在容器中设置一个以root身份启动的入口点脚本,更改容器中的用户以使其与卷装入中文件/目录所有者的用户相匹配(这将是您的主机上的用户),然后切换到该用户以运行该应用。我在基本镜像存储库中有一个示例,以及在您自己的容器中实现此操作所需的脚本:https://github.com/sudo-bmitch/docker-base

在这里,fix-perms脚本可以完成繁重的工作,其中包括如下代码:

# update the uid
if [ -n "$opt_u" ]; then
OLD_UID=$(getent passwd "${opt_u}" | cut -f3 -d:)
NEW_UID=$(stat -c "%u" "$1")
if [ "$OLD_UID" != "$NEW_UID" ]; then
echo "Changing UID of $opt_u from $OLD_UID to $NEW_UID"
usermod -u "$NEW_UID" -o "$opt_u"
if [ -n "$opt_r" ]; then
find / -xdev -user "$OLD_UID" -exec chown -h "$opt_u" {} \;
fi
fi
fi

该脚本在启动时以root用户身份在容器内运行。我运行的入口点的最后一步将称为:
exec gosu ${app_user} "$@"

它以应用程序用户身份作为新的pid 1可执行文件运行container命令。

关于docker - 我运行docker-compose up后由于权限错误而无法编辑本地文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53901121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com