构建Docker映像时,如何将文件COPY到映像中,以便生成的文件由root以外的用户拥有?
COPY
yhuiod9q1#
在ADD或COPY命令中使用可选标志--chown=<user>:<group>。例如
ADD
--chown=<user>:<group>
COPY --chown=<user>:<group> <hostPath> <containerPath>
Docker不支持COPY作为root以外的用户。您需要在COPY命令 * 之后 * 对文件执行chown/chmod。停靠文件示例:
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。
Issue 34263是实现可选标记功能的问题,Issue 467更新了文档。
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"]
2条答案
按热度按时间yhuiod9q1#
在
ADD
或COPY
命令中使用可选标志--chown=<user>:<group>
。例如
Docker不支持
COPY
作为root以外的用户。您需要在COPY
命令 * 之后 * 对文件执行chown
/chmod
。停靠文件示例:
在v17.09.0-ce之前,
COPY
命令的Dockerfile参考说明:创建的所有新文件和目录的UID和GID均为0。
Issue 34263是实现可选标记功能的问题,Issue 467更新了文档。
nfeuvbwi2#
我确实喜欢这个&非常完美