如何从dockerfile中的Jfrog工件中获取战争文件?收到HTTP 401错误

问题描述

我创建了一个声明性的詹金斯管道,其阶段之一如下:

stage('Docker Image'){
        steps{
            bat 'docker build -t HMT/demo-application:%BUILD_NUMBER% --no-cache -f Dockerfile .'
        }
      }

这是docker文件

FROM tomcat:alpine

RUN wget -O /usr/local/tomcat/webapps/launchstation04.war  http://localhost:8082/artifactory/demoArtifactory/com/demo/0.0.1-SNAPSHOT/demo-0.0.1-SNAPSHOT.war

EXPOSE 9100

CMD /usr/local/tomcat/bin/cataline.bat run

我收到以下错误

[91m/bin/sh:
01:33:28  [0mThe command '/bin/sh -c wget -O /usr/local/tomcat/webapps/launchstation04.war  http://localhost:8082/artifactory/demoArtifactory/com/demo/0.0.1-SNAPSHOT/demo-0.0.1-SNAPSHOT.war' returned a non-zero code: 127

更新:

我已将命令更新为

RUN wget -O /usr/local/tomcat/webapps/launchstation04.war -U jenkinsuser:Learning@% http://localhost:8082/artifactory/demoArtifactory/com/demo/0.0.1-SNAPSHOT/demo-0.0.1-20200823.053346-18.war

我的命令没有问题。Jfrog人工制品无法授权此操作。因此我添加用户名密码详细信息,但仍然无法正常工作。

enter image description here

错误

wget:服务器返回错误:HTTP / 1.1 401未经授权

密码策略修改为不受支持后,它无法正常工作。但是,当我允许匿名访问时,它可以正常工作。 如何使用凭据提供访问权限。

解决方法

需要进一步澄清您的问题。不知道在哪里使用curl命令。 图像tomcat:alpine不包含curl命令。除非您手动安装。

bash-4.4# type curl
bash: type: curl: not found
bash-4.4# 

如果您要询问的是sh -c选项,则通过CMD选项调用脚本,是的,它将使用sh。相反,您可以尝试使用ENTRYPOINT。

,

您可以通过命令行提供用户名和密码:

wget --user user --password pass

使用curl

curl -u username:password -O

但使用特殊字符无效:

[a-z][A-Z][0-9]

中将您的密码更改一次。 ,

尝试使用API​​密钥而不是密码,我感觉“ @”可能会让您失望。引号也可以提供帮助,或者使用-p

分隔密码

还要查看请求日志,以了解用户输入的条目是401,还是匿名/未经身份验证的

最后,请查看是否可以从图像外部进行cURL处理,然后再将文件添加到其中,因为这样可以消除主机上可能存在的所有外部因素(我认为该命令可以正常工作)