首页 > 解决方案 > 如何使用 docker-compose 的官方 wordpress 图像修复 wp-content 的文件权限

问题描述

问题


我正在使用 docker-compose 和来自 docker 存储库的官方 wordpress 图像设置一个 Wordpress 本地环境。

我在窗户上。

问题是我在 wp-content 上有一些权限问题,我无法从我的 Wordpress 管理面板上传文件。 wordpress 错误无法创建目录

我已经做了什么


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

wordpress 容器中的文件权限

如您所见, my 的wp-content所有者rootwww-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/

但后来我意识到我正在覆盖ENTRYPOINT原始 wordpress 图像的 ,并且容器总是以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运行命令?
你知道解决这个问题的更好方法吗?

标签: wordpressdockerdocker-compose

解决方案


您可以修改./entrypoint.sh脚本以在执行 chown 命令后运行原始图像的默认入口点脚本:

#!/bin/bash
echo Fixing permissions...
chown -R www-data:www-data /var/www/html/wp-content/
docker-entrypoint.sh apache2-foreground

推荐阅读