嗨我试图将我的docker镜像部署到openshift online v3但失败并显示消息
sed:无法打开临时文件/etc/php/7.0/apache2/sedJpqwn4: 许可被拒绝
我的泊坞窗图片包含像
这样的sed脚本RUN sed -i '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
我是openshift和docker的新手如何解决这个问题?
答案 0 :(得分:1)
即使文件/etc/apache2/apache2.conf
是可写的,当使用sed -i
时,目录也必须是可写的,因为sed
将首先在该目录中创建一个临时文件。
我的猜测是整个目录以及文件不能写入运行容器的用户,这实际上是一个随机用户ID。
如果要构建自己的映像,则需要确保应用程序或启动代码需要修改的任何目录/文件都是组root
并且可以按组写入。
BTW,如果这是您自己的图像,为什么不使用PHP的Source-to-Image构建器呢?
答案 1 :(得分:1)
您可以尝试切换到root:
USER root
RUN sed -i '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
USER 185
id&#34; 185&#34;它是我使用的图像中的原始用户,您可以使用以下方式测试您的案例:
RUN id -u
请记住切换回非root用户,这是与docker相关的openshift限制之一。