3

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

目标

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

眼镜

  • Docker 版本 18.09.5,构建 e8ff056
  • docker-compose 版本 1.24.0,构建 0aa59064
  • 每个服务的单个容器实例 - 没有 kubernetes、swarm、stack 等。
  • 我的docker-compose.yml
  • 我的dockerfile(从 gi​​t 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

如果我从高山构建,uid33是所有者:

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

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

4

1 回答 1

-2

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

于 2019-04-12T20:16:02.263 回答