当我尝试在 Docker 容器上运行 WordPress 时,我遇到了文件夹所有权问题。文件夹喜欢wp-content
并themes
归 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、swarm、stack 等。
- 我的
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
如果我从高山构建,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