问题
我使用来自Docker存储库的官方WordPress映像和docker-compose设置WordPress本地环境。
我在Windows上操作。
问题是我的wp-content
存在权限问题,因此我无法从WordPress管理面板上传文件。
已经尝试过的方法
我检查了容器内的文件权限,并得到以下输出:
如您所见,我的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
,导致容器总是以代码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
后运行命令?
否则,您知道解决此问题的更好方法吗?