[英]AWS Elastic Beanstalk Change Permissions on Mounted Directory
我正在將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
部署成功,所以我可以假設命令執行成功,但遺憾的是,似乎沒有更改權限,因為登錄到容器時,目錄仍然由root擁有
您可以chown
目錄安裝之前,描述在這里 。 簡要概述:
如果您控制Dockerfile,則運行HOST_UID=$(id -u)
和HOST_GID=$(id -g)
並生成一個Dockerfile, $HOST_UID
在以下兩個命令中擴展$HOST_GID
和$HOST_UID
:
RUN groupadd -g $HOST_GID mygroup
RUN useradd -l -u $HOST_UID -g mygroup myuser
使用生成的Dockerfile並填入ID,以構建您的圖像。
如果您不控制Dockerfile, 這里是一個容器模式,用於在運行時以易於移植的方式分配userid / groupid。
您只需將源文件復制到容器中,然后將它們chown。
ADD ./ /var/www
RUN chown....
在生產中最好將文件復制到容器中。
好在這里閱讀: https : //medium.com/@basi/docker-compose-from-development-to-production-88000124a57c
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.