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

Pat*_*ard 6 php laravel docker

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

在此输入图像描述

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

在此输入图像描述

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

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

Dan*_*Dan 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"]
Run Code Online (Sandbox Code Playgroud)

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

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

Dockerfile 参考:https ://docs.docker.com/engine/reference/builder/#user