Проблемы с созданием рабочего изображения Docker для не root пользователя - PullRequest
0 голосов
/ 11 июля 2020

Я хочу создать изображение docker, используя базовое изображение (не root), которое будет запускать сервис stati c http assets. Итак, в базовом образе Debian уже есть NodeJS, и я хочу использовать http-сервер пакета NPM для обслуживания ресурсов. Мой Dockerfile выглядит так:

FROM mwi_node10_20190321
USER root
RUN useradd -u 5000 node
RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app

WORKDIR /home/node/app
RUN npm install --global http-server

USER node
COPY --chown=node:node . .

Когда я затем пытаюсь запустить http-сервер, используя:

docker container run -it --user node 46c476f9dac5 http-server

, я получаю следующую ошибку:

docker: Ответ от демона об ошибке: Ошибка создания среды выполнения OCI: container_ linux. go: 345: запуск процесса контейнера вызвал «exe c:« http-server »: исполняемый файл не найден в $ PATH»: unknown.

Однако, если я работаю под пользователем root, он работает без каких-либо проблем с использованием cmd:

docker container run -it --user node 46c476f9dac5 http-server

Так что похоже на проблему с разрешением при запуске его как non -корневой, но не знаю, как это исправить. Есть идеи?

1 Ответ

1 голос
/ 11 июля 2020

Ок, удалось решить эту проблему, добавив разрешения для пользователя узла, не уверен, что это лучший подход, поэтому рад получить обратную связь по нему, вот что я сделал, чтобы решить эту проблему с помощью моего обновленного файла Docker:

FROM mwi_node10_20190321
USER root
RUN useradd -u 5000 node
RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app
RUN chmod 755 /opt/mdw/node-v10.15.3-linux-x64/

WORKDIR /home/node/app
RUN npm install --global http-server

USER node
COPY ./dist/apps/designer/ /webapplication/
WORKDIR /webapplication/
CMD ["http-server", "-s"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...