AWS Elastic Beanstalk 更改挂载目录的权限

Exo*_*imp 5 php linux amazon-web-services docker amazon-elastic-beanstalk

我正在将 Laravel 应用程序部署到多容器 Elastic Beanstalk 配置。应用程序代码打包在一个 zip 文件中并作为部署的一部分上传,然后挂载到 PHP-FPM Docker 容器中。容器正确运行并挂载了代码,但是所有挂载的目录都归其所有root,因此应用程序无法写入这些目录(日志文件、框架文件等需要)。我需要他们拥有www-data

如果我在 EC2 实例上手动 SSH,然后运行docker exec -it container_id bash并运行ls -la我可以看到所有文件/目录都归 root 所有。如果我运行,chown -R www-data: storage vendor则应用程序按预期工作。

因此,我需要找到一种方法来更改php-fpm 容器已安装目录的权限。

我已经尝试了以下命令 .ebextensions/permissions.config

container_commands:
  01_change_storage_permissions:
    # Get the php fpm container ID and change permissions on the mounted directories
    command: sudo docker exec $(sudo docker ps -aqf "name=php-fpm") chown -R www-data:www-data storage vendor bootstrap
Run Code Online (Sandbox Code Playgroud)

部署成功,所以我可以假设命令执行成功,但不幸的是它似乎没有更改权限,因为登录到容器时,目录仍然归 root 所有

Sam*_* H. 2

您可以chown在安装目录之前对其进行操作,如此处所述。简要概述:

\n\n

如果您控制 Dockerfile,则运行HOST_UID=$(id -u)和并生成一个在以下两个命令中扩展和 的HOST_GID=$(id -g)Dockerfile :$HOST_GID$HOST_UID

\n\n
RUN groupadd -g $HOST_GID mygroup\nRUN useradd -l -u $HOST_UID -g mygroup myuser\n
Run Code Online (Sandbox Code Playgroud)\n\n

使用生成的 Dockerfile 并填写 ID 来构建您的映像。

\n\n

如果您不控制 Dockerfile,这里的 xe2x80x99 是一个容器模式,用于在运行时以易于移植的方式分配用户 ID / 组 ID。

\n