Laravel Artisan 命令以 root 身份创建新文件而不是 1000 个

问题描述 投票:0回答:3

我目前为我的 laravel 项目有一个很好的 docker 设置

当我需要执行 php artisan 命令时,我将 php-fpm 容器附加到我的终端。一切都很好。除非 artisan 命令创建新文件。

文件是以 root 身份创建的。为了解决这个问题,我需要“chown -R 1000:1000 /application”

每次都这样做非常烦人,并且正在徘徊是否有一种方法可以在 Ubuntu 或我的 docker 设置中让 artisan 自己创建 1000 个文件,而我不需要再担心了。

php laravel docker
3个回答
5
投票

您需要做的是创建一个用户并告诉 Docker 使用该用户进行所有后续操作,例如

# Dockerfile
...

WORKDIR /var/www

...

# create a new linux user group called 'developer' with an arbitrary group id of '1001'
RUN groupadd -g 1001 developer

# create a new user called developer and add it to this group
RUN useradd -u 1001 -g developer developer

# change the owner and group of the current working directory to developer
COPY --chown=developer:developer . /var/www

# run all subsequent processes as this user
USER developer

...

EXPOSE 9000

CMD ["php-fpm"]

创建组并不是绝对必要的,但如果您需要在单个集群或服务器上为多个服务或用户分配相同的权限,那么创建组会很有用。

如果您不为 Docker 容器分配非 root 用户进行本地开发等操作,那么这不是世界末日,但您会遇到所遇到的问题。然而,在生产中,这可能是一个“严重”的安全问题,因为它可以使攻击者获得系统其余部分的 root 权限。 Dockerfile 参考:https://docs.docker.com/engine/reference/builder/#user

对于任何对 laravel 和 sail/docker 有同样问题的人。

0
投票
安装 sail 用于 laravel 应用程序开发时,默认情况下 docker 将仅以 root 用户运行。因此,如果您使用 sudo 运行 docker/sail,则使用 php artisan 创建的文件将全部属于 root,因此它将要求您为创建的所有新文件设置/添加权限。

要解决本地开发的此问题,您可以更改 docker.sock 的权限,如下所示:

sudo chmod 666 /var/run/docker.sock

直接在命令上模拟你想要的用户

0
投票

sudo -u {此处的用户} php artisan storage:populate

© www.soinside.com 2019 - 2024. All rights reserved.