这个问题与OpenShift,Minishift的本地版本有关。我在MacOS上跑步。
我正在尝试从docker hub部署名为Mountebank的应用程序,这里是源代码:
https://hub.docker.com/r/andyrbell/mountebank/
DockerFile如下:
FROM alpine:3.6
EXPOSE 2525
CMD ["mb"]
ENV NODE_VERSION=6.10.3-r1
RUN apk update \
&& apk add --no-cache nodejs=${NODE_VERSION} \
&& apk add --no-cache nodejs-npm=${NODE_VERSION}
ENV MOUNTEBANK_VERSION=1.13.0
RUN npm install -g mountebank@${MOUNTEBANK_VERSION} --production \
&& npm cache clean \
&& rm -rf /tmp/npm*
我可以在MacOS本地的容器中运行Mountebank图像。
当我在Minishift中安装图像并尝试启动一个pod时,我收到以下错误:
/usr/lib/node_modules/mountebank/node_modules/q/q.js:155
throw e;
^
Error: EACCES: permission denied, open 'mb.pid'
at Error (native)
at Object.fs.openSync (fs.js:641:18)
at Object.fs.writeFileSync (fs.js:1347:33)
at /usr/lib/node_modules/mountebank/bin/mb:176:16
at _fulfilled (/usr/lib/node_modules/mountebank/node_modules/q/q.js:854:54)
at self.promiseDispatch.done (/usr/lib/node_modules/mountebank/node_modules/q/q.js:883:30)
at Promise.promise.promiseDispatch (/usr/lib/node_modules/mountebank/node_modules/q/q.js:816:13)
at /usr/lib/node_modules/mountebank/node_modules/q/q.js:624:44
at runSingle (/usr/lib/node_modules/mountebank/node_modules/q/q.js:137:13)
at flush (/usr/lib/node_modules/mountebank/node_modules/q/q.js:125:13)
我假设这与我的pod在Minishift中运行的权限问题有关,但我不知道如何更改它们。
感谢任何帮助,
非常感谢
答案 0 :(得分:3)
这可能是由于您尝试运行需要以root
运行的图像而导致的。您应该以构建图像为目标,使其可以作为任何用户ID运行。
首先,我建议尝试使用随OpenShift提供的nodejs S2I构建器映像。
接下来将修改您的图片,以便按照以下指南的任何用户ID运行:
最后,如果由于某种原因无法修复图像,您将作为OpenShift群集管理员配置项目,以允许您以root
运行图像。
对于Minishift,请参阅anyuid
添加的详细信息,这样可以更容易。
答案 1 :(得分:2)
好的,所以这就是我解决问题的方法。我移动了存储mb.pid和mb.log文件的位置。它们最初存储在root中,当图像在Minishift中托管时会导致问题:
FROM alpine:3.6
EXPOSE 2525
CMD mb --pidfile /tmp/mb.pid --logfile /tmp/mb.log
ENV NODE_VERSION=6.10.3-r1
RUN apk update \
&& apk add --no-cache nodejs=${NODE_VERSION} \
&& apk add --no-cache nodejs-npm=${NODE_VERSION}
ENV MOUNTEBANK_VERSION=1.13.0
RUN npm install -g mountebank@${MOUNTEBANK_VERSION} --production \
&& npm cache clean \
&& rm -rf /tmp/npm*
注意 - pidfile --logfile 存储/ tmp /
中的文件