Docker命名卷上的文件所有权

时间:2019-04-12 19:26:22

标签: wordpress docker docker-compose file-ownership

当我尝试在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))?

1 个答案:

答案 0 :(得分:-1)

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