У меня есть контейнер с nodejs и PM2 как команды запуска и на OpenShift я получаю эту ошибку при запуске:разрешения отказано, MkDir в контейнере на OpenShift
Error: EACCES: permission denied, mkdir '/.pm2'
Я попытался же изображение на хостере Marathon и она работала хорошо.
Нужно ли что-то менять с помощью UserIds?
The 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"]
Update
изображение узла уже создает новый пользовательский "узел" с UID 1000 не запускать образ как корень.
Я также пытался исправить разрешения и добавить пользовательский «узел» в корневую группу.
Далее я сказал PM2, к которому реж он должен использовать с ENV вар:
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 спасибо Graham 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 дает вам эту ошибку? EDIT: Ах, извините, это происходит при запуске контейнера ... –
Похоже, что pm2-docker игнорирует текущий рабочий каталог. Кроме того, проверяя историю изображений (я не смог найти файл Docker для 7.4), он выглядит как ожидаемый рабочий каталог/home/node. Вероятно, PM2-докер (никогда не использовал его) также ожидает, что это будет рабочий каталог. Можете ли вы попытаться изменить COPY и WORKDIR, чтобы источник находился внутри/home/node? –
Файл Docker должен быть следующим: https://github.com/nodejs/docker-node/blob/90d5e3df903b830d039d3fe8f30e3a62395db37e/7.5/alpine/Dockerfile – ivoba