Dockerfile构建Jenkins时jenkins.war权限拒绝问题求助
非权限设置类解决方案
错误根源说明
切换到jenkins用户后,当前工作目录仍为/root(之前root用户的工作目录),jenkins用户无该目录写入权限,导致curl无法创建文件——你添加的chmod是下载成功后才会执行的命令,根本没机会运行。
方案1:切换到jenkins有权限的目录执行下载
利用之前创建的/srv/backup目录(已设置为jenkins用户所有),先切换到该目录再下载:
USER jenkins RUN cd /srv/backup && curl -O https://get.jenkins.io/war-stable/2.303.2/jenkins.war && chmod 777 jenkins.war
或者用WORKDIR指定默认工作目录:
USER jenkins WORKDIR /srv/backup RUN curl -O https://get.jenkins.io/war-stable/2.303.2/jenkins.war && chmod 777 jenkins.war
方案2:直接下载到Jenkins初始化引用目录
/usr/share/jenkins/ref是Jenkins官方镜像预留的初始化资源目录,jenkins用户对其有写入权限,直接指定下载路径即可:
USER jenkins RUN curl -o /usr/share/jenkins/ref/jenkins.war https://get.jenkins.io/war-stable/2.303.2/jenkins.war && chmod 777 /usr/share/jenkins/ref/jenkins.war
方案3:在root用户阶段完成下载(绕开权限问题)
提前以root用户身份下载war包,再将文件归属转交给jenkins,避免切换用户后的权限限制:
# 保留在root用户阶段执行下载 RUN curl -O https://get.jenkins.io/war-stable/2.303.2/jenkins.war && chown jenkins:jenkins jenkins.war && chmod 777 jenkins.war USER jenkins # 后续命令不变 COPY plugins.txt /usr/share/jenkins/ref/plugins.txt RUN jenkins-plugin-cli -f /usr/share/jenkins/ref/plugins.txt ENV JAVA_HOME /usr/lib/jvm/java-17-openjdk-amd64
内容的提问来源于stack exchange,提问作者user20501227
相关产品推荐
相关产品推荐

