Dockerfile“ RUN chmod”无效

毛里西奥·门多萨

其他所有内容均生效,但权限未更改,我是否缺少某些内容?

FROM joomla:3.9-php7.2-apache

RUN apt-get update \
&& apt-get install -y apt-utils vim curl

COPY ./joomla_html /var/www/html

RUN chmod -R 765 /var/www/html/

RUN chown -R www-data. /var/www/html/
RUN chmod -R 777 /var/www/html/tmp
RUN chmod -R 777 /tmp
RUN chmod -R 777 /var/www/html/modules
RUN chmod -R 777 /var/www/html/components
RUN chmod -R 777 /var/www/html/administrator/logs
RUN chmod -R 777 /var/www/html/images
RUN chmod -R 777 /var/www/html/uploads

COPY ./docker/php.ini /usr/local/etc/php/conf.d/php-extras.ini

EXPOSE 80

这就是我得到的,每个文件都具有1000:1000的权限,我需要将它作为www-data

ls -la / var / www / html的输出是

total 144
drwxr-xr-x 19 1000 1000 4096 May 8 18:53 .
drwxr-xr-x 1 root root 4096 May 8 02:30 ..
drwxr-xr-x 25 1000 1000 4096 May 8 18:53 components
drwxr-xr-x 6 1000 1000 4096 May 8 18:53 images
drwxr-xr-x 68 1000 1000 4096 May 8 18:53 modules
drwxr-xr-x 2 1000 1000 4096 May 8 18:53 tmp
drwxr-xr-x 2 1000 1000 4096 May 8 18:53 uploads
米奇

该目录被定义为上游卷:https : //github.com/joomla/docker-joomla/blob/d34ff24288dfb5b27a167f870f1fcca56077be78/ph​​p7.2/apache/Dockerfile#L64

VOLUME /var/www/html

无法使用RUN命令修改卷。它们从具有该卷的临时容器开始,并且仅保存对该容器的更改,而不保存该卷。

您可以尝试要求上游仓库更改其映像,以从Dockerfile中删除卷定义。或者,您可以拉他们的仓库,并在没有卷的情况下构建自己的基础映像版本。这些都不会阻止您稍后在该目录中使用卷运行容器。

否则,如果要扩展映像并使用RUN命令进行更改,则需要将文件保存在另一个目录中。您还可以使用一个入口点,在容器启动时将这些文件复制到/ var / www / html。

您还可以考虑一个多阶段构建,在第一阶段修复权限,然后在发布阶段将文件直接复制到卷中。如您所见,COPY仍适用于卷。它不是用临时容器实现的,因此可以将文件直接放置在映像文件系统中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章