小编Rag*_*han的帖子

在 Docker Image 中复制具有执行权限的文件

似乎是一个基本问题,但到目前为止找不到任何答案..

在Dockerfile中使用ADD / COPY并在linux上运行镜像时,镜像中复制的文件的默认文件权限是644。这个文件的所有者似乎是'root'

但是,在运行映像时,非 root 用户启动容器,因此以 644 权限复制的任何文件都无法执行此复制/添加的文件,并且如果该文件在 ENTRYPOINT 处执行,则它无法启动并出现权限被拒绝错误。

我在其中一篇文章中读到 Docker 1.17.0+ 之后的 COPY/ADD 允许 chown 但在我的情况下,我不知道谁将成为非 root 用户,因此我无法将权限设置为该用户。

我还看到了另一种将文件添加/复制到不同位置并使用 RUN 将它们从临时位置复制到实际文件夹的方法,如下所示。但是这种方法不起作用,因为最终图像在 /otp/scm 中没有文件

#Installing Bitbucket and setting variables  
WORKDIR /tmp
ADD atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz .
COPY bbconfigupdater.sh .

#Copying Entrypoint script which will get executed when container starts 
WORKDIR /tmp 
COPY entrypoint.sh .

RUN ls -lrth /tmp

WORKDIR /opt/scm 
RUN pwd && cp /tmp/bbconfigupdater.sh /opt/scm \
 && cp /tmp/entrypoint.sh /opt/scm \
 && cp -r /tmp/atlassian-bitbucket-${BITBUCKET_VERSION} /opt/scm \
 && chgrp …
Run Code Online (Sandbox Code Playgroud)

containers bitbucket bitbucket-server docker dockerfile

6
推荐指数
2
解决办法
1万
查看次数