簡體   English   中英

AWS Elastic Beanstalk更改已安裝目錄的權限

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM