Dan*_*_DD 5 wordpress docker docker-compose
我正在使用docker-compose和来自docker存储库的官方wordpress图像设置Wordpress本地环境。
我在窗户上。
问题是我在wp内容上存在一些权限问题,并且无法从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"]
Run Code Online (Sandbox Code Playgroud)
我的entrypoint.sh样子是这样的:
#!/bin/bash
echo Fixing permissions...
chown -R www-data:www-data /var/www/html/wp-content/
Run Code Online (Sandbox Code Playgroud)
但是后来我意识到我要覆盖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/
Run Code Online (Sandbox Code Playgroud)
但是我总是收到文件或文件夹不存在的错误。
我也尝试过这样使用CMD:
CMD ["chown", "-R", "www-data:www-data", "/var/www/html/wp-content/"]
但是没有成功。
有没有一种方法可以在原始命令之后运行ENTRYPOINT?
您是否知道另外一种解决此问题的更好方法?
您可以修改./entrypoint.sh脚本以在执行 chown 命令后运行原始图像的默认入口点脚本:
#!/bin/bash
echo Fixing permissions...
chown -R www-data:www-data /var/www/html/wp-content/
docker-entrypoint.sh apache2-foreground
Run Code Online (Sandbox Code Playgroud)
小智 3
从 Docker 的文档来看,您应该使用的命令是RUN。
\n\n\n不要将 RUN 与 CMD 混淆。RUN实际上运行一个命令并提交结果;CMD 在构建时不执行任何操作,但指定图像的预期命令。
\n
所以 Dockerfile 中的行应该是:\nRUN chown -R www-data:www-data /var/www/html/wp-content
另外,为了减少创建的图层数量和图像大小,我会链接尽可能多的命令RUN。例如(未测试):
FROM wordpress:5.1.1\n\n# install dos2unix (fix problem between CRLF and LF) and increase upload limit\nRUN apt-get update -y && \\\n apt-get install -y dos2unix && \\\n touch /usr/local/etc/php/conf.d/uploads.ini \\\n && echo "upload_max_filesize = 10M;" >> /usr/local/etc/php/conf.d/uploads.ini && \\\n chown -R www-data:www-data /var/www/html/wp-content\n\n# fix permissions issues\nCOPY entrypoint.sh /\nRUN dos2unix /entrypoint.sh && \\\n chmod +x /entrypoint.sh\n\nENTRYPOINT ["/entrypoint.sh"]\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1021 次 |
| 最近记录: |