我正在为我的Symfony
应用程序构build一个Docker镜像,我需要授予Apache服务器写入caching和日志文件夹
#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 .
创build这个镜像时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有一些错误,如果目录内容是在一个层中创build的,并且其权限在其他更改。
作为一种解决方法,您可以将源复制到临时目录中:
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
另外我创build了GitHub问题 。