AWS Elastic Beanstalk更改已加载目录的权限
我正在将一个Laravel应用程序部署到一个多容器Elastic Beanstalkconfiguration。 应用程序代码打包在一个zip文件中,并作为部署的一部分进行上传,然后将其安装到PHP-FPM Docker容器中。 容器运行正常并且代码被挂载,但是所有挂载的目录都由root
拥有,因此应用程序不能写入这些目录(日志文件,框架文件等所需的)。 我需要他们由www-data
拥有
如果我在EC2实例上手动SSH,然后运行docker exec -it container_id bash
并运行ls -la
我可以看到所有文件/目录都由root拥有。 如果我运行chown -R www-data: storage vendor
那么应用程序按预期工作。
因此,我需要find一种方法来改变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
部署是成功的,所以我可以假定命令成功执行,但不幸的是似乎没有改变权限,因为login到容器,目录仍然由根
chown
,您可以在安装之前将目录chown
。 简要概述:
如果您控制Dockerfile,则运行HOST_UID=$(id -u)
和HOST_GID=$(id -g)
并生成一个Dockerfile,在以下两个命令中展开$HOST_GID
和$HOST_UID
:
RUN groupadd -g $HOST_GID mygroup RUN useradd -l -u $HOST_UID -g mygroup myuser
使用填充了ID的生成的Dockerfile来构build图像。
如果你不控制Dockerfile,下面是一个容器模式,用于在运行时以易于移植的方式分配userid / groupid。
- 在AWS Elastic Beanstalk上部署Dockerized Symfony2应用程序
- 用于服务HTTP / HTTPS请求的Beanstalk-Dockerconfiguration问题
- 使用AWS Application Load Balancer的Websocket超时
- 什么触发Elastic Beanstalk拉入更新的Docker镜像
- Docker部署失败的Elastic Beanstalk
- ElasticBeanstalk Docker主机networking模式
- 如何设置运行Django的AWS Elastic Beanstalk Docker平台?
- 将Elastic Beanstalk环境variables暴露给使用Docker的Laravel的技术人员
- AWS Docker部署