openshift v3 sed 无法打开临时文件

openshift v3 sed couldn't open temporary file

您好,我尝试将我的 docker 图像部署到 openshift online v3 但失败并显示消息

sed: couldn't open temporary file /etc/php/7.0/apache2/sedJpqwn4: permission denied

我的 docker 图像包含类似

的 sed 脚本
RUN sed -i '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf

我是 openshift 的新手,docker如何解决这个问题?

即使文件 /etc/apache2/apache2.conf 是可写的,当使用 sed -i 时,目录也必须是可写的,因为 sed 将首先在该目录中创建一个临时文件。

我的猜测是整个目录以及文件对用户来说是不可写的,容器是 运行,这实际上是一个随机用户 ID。

如果您要构建自己的映像,则需要确保您的应用程序或启动代码需要修改的任何 directories/files 是组 root 并且可按组写入。

顺便说一句,如果这是您自己的图像,您为什么不使用 PHP 的“源到图像”构建器呢?

您可以尝试切换到 root:

USER root
RUN sed -i '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
USER 185

ID“185”是它在我使用的图像中以其开头的原始用户,您可以使用以下方法测试您的案例:

RUN id -u

只要记得切换回非root,这是与docker相关的openshift限制之一。