[英]Issues with creating working Docker image for non-root user
我想使用将运行为 static http 资产服务的基本映像(非根)创建 docker 映像。 所以基础 Debian 图像已经有 NodeJS,我想使用 NPM package http-server 来服务资产。 我的 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-server 时:
docker container run -it --user node 46c476f9dac5 http-server
我收到以下错误:
docker:来自守护进程的错误响应:OCI 运行时创建失败:container_linux.go:345:启动容器进程导致“exec:”http-server“:在 $PATH 中找不到可执行文件”:未知。
但是,如果我在 root 用户下运行,那么使用 cmd 可以正常工作:
docker container run -it --user node 46c476f9dac5 http-server
所以看起来像是一个以非 root 身份运行但不知道如何解决的权限问题。 有任何想法吗?
好的设法通过添加节点用户的权限来解决它,不确定这是否是最好的方法很乐意接受反馈,这是我使用更新的 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
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"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.