【问题标题】:How to change permission on file in Dockerfile?如何更改 Dockerfile 中文件的权限?
【发布时间】:2019-09-26 03:37:25
【问题描述】:

我有以下 Dockerfile:

FROM sonarqube

ADD https://github.com/gabrie-allaigre/sonar-gitlab-plugin/releases/download/4.0.0/sonar-gitlab-plugin-4.0.0.jar /opt/sonarqube/extensions/plugins/
RUN chmod +r /opt/sonarqube/extensions/plugins/ && chown -R sonarqube.sonarqube /opt/sonarqube/extensions/plugins/

我收到以下错误:

Step 3/3 : RUN chmod +x /opt/sonarqube/extensions/plugins/ && chown -R sonarqube.sonarqube /opt/sonarqube/extensions/plugins/
 ---> Running in 0fd0abc88b73
chown: changing ownership of '/opt/sonarqube/extensions/plugins/sonar-gitlab-plugin-4.0.0.jar': Operation not permitted
The command '/bin/sh -c chmod +x /opt/sonarqube/extensions/plugins/ && chown -R sonarqube.sonarqube /opt/sonarqube/extensions/plugins/' returned a non-zero code: 1

如果我这样做:

FROM sonarqube


ADD https://github.com/gabrie-allaigre/sonar-gitlab-plugin/releases/download/4.0.0/sonar-gitlab-plugin-4.0.0.jar /opt/sonarqube/extensions/plugins/
RUN sudo chmod +r /opt/sonarqube/extensions/plugins/ && sudo chown -R sonarqube.sonarqube /opt/sonarqube/extensions/plugins/

我收到以下错误:

Step 3/3 : RUN sudo chmod +x /opt/sonarqube/extensions/plugins/ && sudo chown -R sonarqube.sonarqube /opt/sonarqube/extensions/plugins/
 ---> Running in c7dc030ea2ac
/bin/sh: 1: sudo: not found
The command '/bin/sh -c sudo chmod +x /opt/sonarqube/extensions/plugins/ && sudo chown -R sonarqube.sonarqube /opt/sonarqube/extensions/plugins/' returned a non-zero code: 127

如何在 Dockerfile 中更改文件的权限?

【问题讨论】:

    标签: docker sonarqube dockerfile


    【解决方案1】:

    chmod +r /opt/sonarqube/extensions/plugins/ 抛出错误,因为 sonarqube 容器以用户 sonarqube 运行(请参阅 Dockerfile 中的 USER sonarqube 命令:https://github.com/SonarSource/docker-sonarqube/blob/master/7.7-community/Dockerfile

    sudo 未安装在映像中,因此您将无法使用sudo 运行命令。相反,正如 M. Alekseev 提到的,将用户更改为 root 并运行您的自定义命令。

    USER root
    RUN ...
    RUN ...
    
    # switch back to user sonarqube for security
    USER sonarqube
    

    我建议在安装自定义包等后切换回用户 sonarqube

    请注意,您可能需要对 root 用户创建的文件设置权限。

    【讨论】:

      【解决方案2】:

      如果你想以 root 用户身份运行命令而不是使用 sudo,请使用 USER root 行切换到 root 然后执行你的命令

      【讨论】:

        猜你喜欢
        • 2020-09-23
        • 2022-10-17
        • 2021-12-06
        • 2020-03-19
        • 1970-01-01
        • 2010-12-09
        • 2015-04-14
        • 1970-01-01
        • 2013-06-27
        相关资源
        最近更新 更多