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限制之一。
您好,我尝试将我的 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限制之一。