如何使用docker-compose的官方wordpress图像修复wp-content的文件权限

问题描述 投票:1回答:1

问题


我正在设置一个带有docker-compose的Wordpress本地环境和来自docker存储库的官方wordpress图像。 我在窗户上。 问题是我在wp内容上有一些提交问题,而且我无法从我的Wordpress管理面板上传文件。 wordpress error unable to create directory

我已经做了什么


我检查了容器内的文件权限,这是输出:

file permissions in the wordpress container 正如你所看到的,我的wp-content的所有者是root而不是www-data

直接的解决方案是打开容器的bash并给予 chown -R www-data:www-data /var/www/html/wp-content/

这当然有效,但每次我开始一个新的wordpress项目时我都不想做这个过程。为了达到这个目的,我创建了一个像这样的Dockerfile

FROM wordpress:5.1.1

# install dos2unix (fix problem between CRLF and LF)
RUN apt-get update
RUN apt-get install -y dos2unix

# increase upload limit
RUN touch /usr/local/etc/php/conf.d/uploads.ini \
    && echo "upload_max_filesize = 10M;" >> /usr/local/etc/php/conf.d/uploads.ini

# fix permissions issues
COPY entrypoint.sh /
RUN dos2unix /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

而我的entrypoint.sh看起来像这样:

#!/bin/bash
echo Fixing permissions...
chown -R www-data:www-data /var/www/html/wp-content/

但后来我意识到我压倒了原始wordpress图像的ENTRYPOINT,并且容器总是与code 0一起退出。

然后我尝试用CMD而不是ENTRYPOINT,我改变了我的Dockerfile像这样:

FROM wordpress:5.1.1

# increase upload limit
RUN touch /usr/local/etc/php/conf.d/uploads.ini \
    && echo "upload_max_filesize = 10M;" >> /usr/local/etc/php/conf.d/uploads.ini

CMD chown -R www-data:www-data /var/www/html/wpcontent/

但我总是收到文件或文件夹不存在的错误。

我试过用CMD也像这样: CMD ["chown", "-R", "www-data:www-data", "/var/www/html/wp-content/"] 但没有成功。


有一种方法可以在原来的ENTRYPOINT之后运行命令吗? 你知道另一种解决这个问题的更好方法吗?

wordpress docker docker-compose
1个回答
0
投票

从Docker的文档中,您应该使用的命令是RUN

不要将RUN与CMD混淆。 RUN实际上运行一个命令并提交结果; CMD在构建时不执行任何操作,但指定了图像的预期命令。

所以Dockerfile中的行应该是:RUN chown -R www-data:www-data /var/www/html/wp-content

此外,为了减少创建的图层数量和图像的大小,我会尽可能多地链接RUN命令。例如(未测试):

FROM wordpress:5.1.1

# install dos2unix (fix problem between CRLF and LF) and increase upload limit
RUN apt-get update -y && \
    apt-get install -y dos2unix && \
    touch /usr/local/etc/php/conf.d/uploads.ini \
    && echo "upload_max_filesize = 10M;" >> /usr/local/etc/php/conf.d/uploads.ini && \
    chown -R www-data:www-data /var/www/html/wp-content

# fix permissions issues
COPY entrypoint.sh /
RUN dos2unix /entrypoint.sh && \
    chmod +x /entrypoint.sh

ENTRYPOINT ["/entrypoint.sh"]
© www.soinside.com 2019 - 2024. All rights reserved.