Permissions

chmod 在 Docker 中無法正常工作

  • March 27, 2019

我正在為我的Symfony應用程序建構 Docker 映像,我需要授予 apache 伺服器寫入記憶體和日誌文件夾的權限

#Dockerfile
FROM php:7-apache

RUN apt-get update \
&& apt-get install -y libicu-dev  freetds-common freetds-bin unixodbc \
&& docker-php-ext-install intl mbstring \
&& a2enmod rewrite

COPY app/php.ini /usr/local/etc/php/
COPY app/apache2.conf /etc/apache2/apache2.conf
COPY ./ /var/www/html

RUN find /var/www/html/ -type d -exec chmod 755 {} \; 
RUN find /var/www/html/ -type f -exec chmod 644 {} \;
RUN chmod -R 777 /var/www/html/app/cache /var/www/html/app/logs

當我使用建構此映像docker build -t myname/symfony_apps:latest .並使用docker run -p 8080:80 myname/symfony_apps:latest. Apache 日誌被權限拒絕錯誤淹沒,我檢查過的奇怪的事情ls -a和權限都很好。當我從容器的 bash 執行 chmod 時,apache 權限問題消失了,應用程序執行良好

情況

**從 dockerfile 執行 chmod 命令:**權限已更改,但 apache 仍然抱怨權限被拒絕。 **在容器內使用 bash 執行 chmod 相同的命令:**權限已更改,我的應用程序正在執行

任何想法,我是否遺漏了什麼,也許我應該在 Dockerfile 的某個地方添加 root 使用者?

我遇到了同樣的問題,如果在一層中創建目錄內容並且在另一層中更改了它的權限,那麼在 docker 或 overlay2 中似乎存在一些錯誤。

作為一種解決方法,您可以將源複製到臨時目錄:

COPY . /src

然後將其移至/var/www/html並設置權限(在一個RUN命令中):

RUN rm -rf /var/www/html && mv /src /var/www/html &&\
   find /var/www/html/ -type d -exec chmod 755 {} \; &&\
   find /var/www/html/ -type f -exec chmod 644 {} \; &&\
   chmod -R 777 /var/www/html/app/cache /var/www/html/app/logs

我還創建了GitHub 問題

引用自:https://serverfault.com/questions/772227