首页 > 解决方案 > chmod 在 Dockerfile RUN 命令中无法正常工作。在构建过程中显示正确,但似乎没有坚持

问题描述

使用以下 dockerfile,我正在尝试创建一个可用于 PHP 的文件夹。

FROM trafex/alpine-nginx-php7:1.2.0

# Add mysql pdo extensions
USER root
RUN apk add php7-pdo php7-pdo_mysql

COPY --chown=nobody:nobody nginx.conf /etc/nginx/nginx.conf
COPY --chown=nobody:nobody public_html/  /var/www/html

RUN chmod 777 /var/www/html/public/ifpos/hits && ls -l /var/www/html/public/ifpos/

USER nobody

在构建过程中,这就是我所看到的

Step 6/7 : RUN chmod 777 /var/www/html/public/ifpos/hits && ls -l /var/www/html/public/ifpos/
 ---> Running in 027345f34fc9
total 8
drwxrwxrwx    2 nobody   nobody        4096 Jan 17 04:21 hits
-rw-r--r--    1 nobody   nobody         817 Jan 17 03:04 listener.php

但是,当我终端进入容器并列出目录时,我可以看到它没有正确设置。

/var/www/html/public/ifpos $ ls -l
total 8
dr-xr-xr-x    2 nobody   nobody        4096 Jan 17 04:21 hits
-rw-r--r--    1 nobody   nobody         817 Jan 17 03:04 listener.php

请帮忙,这让我很头疼!

标签: phpdockernginx

解决方案


发生这种情况是因为在图像/var/www/html中标记为- https://hub.docker.com/r/trafex/alpine-nginx-php7/dockerfileVOLUMEtrafex/alpine-nginx-php7:1.2.0

您可以运行chmod作为入口点脚本的一部分,该脚本chmod首先执行然后调用实际的入口点"/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"


推荐阅读