Permissions
chmod 在 Docker 中無法正常工作
我正在為我的
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 問題。