繁体   English   中英

Docker命名卷上的文件所有权

[英]File ownership on docker named volumes

尝试在Docker容器上运行WordPress时遇到文件夹所有权问题。 wp-contentthemes这样的文件夹是root拥有的,不允许我从Web界面安装主题和插件。

目标

  • 在Docker上运行WordPress。
  • 从git repo(我们拥有)获取主题。
  • 能够从其官方Docker映像( wordpress:cli )运行WP-CLI。
  • 能够从Web界面安装主题和插件。
  • /var/www/html下的所有文件和文件夹均由www-data (uid 33)拥有。

眼镜

  • Docker版本18.09.5,内部版本e8ff056
  • docker-compose版本1.24.0,内部版本0aa59064
  • 每个服务的单个容器实例-没有kubernetes,群集,堆栈等
  • docker-compose.yml
  • 我的dockerfile (从git repo复制):

FROM wordpress:5

COPY --chown=33 ./ /var/www/html/wp-content/themes/theme/

卷数

我没有在dockerfile上声明卷-只是上面的这两行,没有别的。 实际上,此图像仅用于将文件夹复制到WordPress图像中。 WordPress图像(我的图像派生自​​该图像)在其dockerfile中声明了一个卷。

我确实在docker-compose文件中声明了卷,但是当忽略它们时,问题仍然存在

结果

文件和文件夹所有权...


更新

Docker构建中的COPY步骤存在一些问题,但我不知道是什么。

我将dockerfile更改为

FROM alpine
COPY ./ /var/www/html/wp-content/themes/theme/
RUN chown -R 33:33 /var/www/html
RUN ls -n /var/www/html

如果我是从阿尔卑斯山建造的,则uid 33是所有者:

Step 4/4 : RUN ls -n /var/www/html
 ---> Running in e9850fa85800
total 4
drwxr-xr-x    1 33       33            4096 Apr 12 19:34 wp-content

我将第一行更改为FROM wordpress现在root是所有者

Step 4/4 : RUN ls -n /var/www/html
 ---> Running in 2810cc37aaba
total 4
drwxr-xr-x. 3 0 0 4096 Apr 12 19:38 wp-content

如何继续获得所需的结果(即/var/www/html/wp-content/themes/theme/文件以及www-data (uid 33)拥有的所有文件和文件夹)?

您可以在dockerfile中使用ADD或COPY命令设置所有者,对于COPY命令,请尝试COPY --chown:www-data:www-data ./ /var/www/html/wp-content/themes/theme/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM