如何以非根用户身份进行Docker复制?

fcg9iug3  于 2023-03-07  发布在  Docker
关注(0)|答案(2)|浏览(111)

构建Docker映像时,如何将文件COPY到映像中,以便生成的文件由root以外的用户拥有?

yhuiod9q

yhuiod9q1#

    • 适用于v17.09.0-ce及更新版本**

ADDCOPY命令中使用可选标志--chown=<user>:<group>
例如

COPY --chown=<user>:<group> <hostPath> <containerPath>
  • -chown标志的文档现在位于主Dockerfile参考页面上。

Docker不支持COPY作为root以外的用户。您需要在COPY命令 * 之后 * 对文件执行chown/chmod
停靠文件示例:

from centos:6
RUN groupadd -r myuser && adduser -r -g myuser myuser
USER myuser
#Install code, configure application, etc...
USER root
COPY run-my-app.sh /usr/local/bin/run-my-app.sh
RUN chown myuser:myuser /usr/local/bin/run-my-app.sh && \
    chmod 744 /usr/local/bin/run-my-app.sh
USER myuser
ENTRYPOINT ["/usr/local/bin/run-my-app.sh"]

在v17.09.0-ce之前,COPY命令的Dockerfile参考说明:
创建的所有新文件和目录的UID和GID均为0。

    • 历史记录**此功能已通过多个GitHub问题进行了跟踪:一个二个一个、一个三个、一个四个、一个五个、一个六个、一个七个。

Issue 34263是实现可选标记功能的问题,Issue 467更新了文档。

nfeuvbwi

nfeuvbwi2#

我确实喜欢这个&非常完美

FROM node:lts-alpine3.17
RUN addgroup app && adduser -S -G app app
RUN mkdir /app && chown app:app /app
USER app
WORKDIR /app
COPY --chown=app:app package*.json .
RUN npm install
COPY --chown=app:app . .
EXPOSE 8090
CMD ["npm","start"]

相关问题