容器我有一個的NodeJS和PM2作爲啓動命令和OpenShift我啓動時獲取此錯誤的容器:權限被拒絕,MKDIR在openshift
Error: EACCES: permission denied, mkdir '/.pm2'
我試過同一圖像上的馬拉松主機供應商,它的工作精細。
我需要用UserIds改變一些東西嗎?
的Dockerfile:
FROM node:7.4-alpine
RUN npm install --global yarn pm2
RUN mkdir /src
COPY . /src
WORKDIR /src
RUN yarn install --production
EXPOSE 8100
CMD ["pm2-docker", "start", "--auto-exit", "--env", "production", "process.yml"]
更新
節點的圖像已經創建了一個新用戶 「節點」 與UID 1000以不運行圖像作爲根。
我也嘗試修復權限並將用戶「節點」添加到根組。
而且我告訴哪個目錄應該與ENV VAR使用PM2:
PM2_HOME=/home/node/app/.pm2
,但我仍然得到錯誤:
Error: EACCES: permission denied, mkdir '/home/node/app/.pm2'
更新Dockerfile:
FROM node:7.4-alpine
RUN npm install --global yarn pm2
RUN adduser node root
COPY . /home/node/app
WORKDIR /home/node/app
RUN chmod -R 755 /home/node/app
RUN chown -R node:node /home/node/app
RUN yarn install --production
EXPOSE 8100
USER 1000
CMD ["pm2-docker", "start", "--auto-exit", "--env", "production", "process.yml"]
UPDATE2 感謝格雷厄姆Dumpleton我得到它的工作
FROM node:7.4-alpine
RUN npm install --global yarn pm2
RUN adduser node root
COPY . /home/node/app
WORKDIR /home/node/app
RUN yarn install --production
RUN chmod -R 775 /home/node/app
RUN chown -R node:root /home/node/app
EXPOSE 8100
USER 1000
CMD ["pm2-docker", "start", "--auto-exit", "--env", "production", "process.yml"]
哪條RUN線給你這個錯誤?編輯:啊,對不起,運行容器時發生...... –
它看起來像pm2-docker忽略當前的工作目錄。另外,通過檢查圖像歷史記錄(我找不到7.4的Dockerfile),它看起來像預期的工作目錄是/ home/node。也許pm2-docker(從來沒有用過)也期望這是工作目錄。您可以嘗試更改COPY和WORKDIR,以使源位於/ home/node內? –
Dockerfile應該是這樣的:https://github.com/nodejs/docker-node/blob/90d5e3df903b830d039d3fe8f30e3a62395db37e/7.5/alpine/Dockerfile – ivoba