为什么docker运行时说Unknown操作数,而相同的shell脚本却在ubuntu计算机中完美运行

问题描述 投票:0回答:1

[我现在尝试在ubuntu机器上运行./login.sh时将docker run作为./login.sh的一部分执行,我看到成功响应,但是当我创建docker映像时我看到输出为sh: abc: unknown operand “invalid url”

这里是./login.sh的内容

 #!/bin/sh
 # Black Box Tester!


content=$(curl  --location --request POST "https://api.platform.abc.com. 
/auth/oauth/token" --header 'Content-Type: application/x-www-form- 
urlencoded' \
 --header 'Authorization: Basic V0zSA==' --data-raw 'grant_type=password&
[email protected]&password=123456'| jq -r '.domain_id' )
if [ $content = abc ]
     then
          echo “Valid Login Token”
else
          echo “invalid url”
fi

这里是码头工人文件的内容

FROM ubuntu:16.04

RUN apt-get update && apt-get install -y \
curl

FROM openjdk:8-jre-alpine

RUN apk --no-cache add curl


WORKDIR /opt
RUN wget "http://stedolan.github.io/jq/download/linux64/jq" && chmod 755 jq


ADD login.sh /opt


CMD ["./login.sh"]

当我在Ubuntu机器上正常执行相同的./login.sh时,我将成功输出为

    ubuntu@ip-172-31-29-248:~$ ./login.sh 
   % Total    % Received % Xferd  Average Speed   Time    Time     Time    
  Current
                             Dload  Upload   Total   Spent    Left  Speed
100  2034  100  1958  100    76   9458    367 --:--:-- --:--:-- --:--:--  
9873
“Valid Login Token”

这里是sudo docker run lots/loginimage的输出

 ubuntu@ip-172-31-29-248:~$ sudo docker run lots/loginimage
 ./login.sh: line 6: jq: not found
   % Total    % Received % Xferd  Average Speed   Time    Time     Time       
 Current
                             Dload  Upload   Total   Spent    Left  Speed
 92  2034   92  1807  100    76   7199    302 --:--:-- --:--:-- --:--:--      
7501
curl: (23) Failed writing body (0 != 1024)
sh: abc: unknown operand
“invalid url”

有人可以让我知道为什么只是一个curl命令的登录脚本在ubuntu机器上成功运行,但是相同的登录脚本却显示了docker run中的其他情况吗?

而且我在docker文件中包含了一个代码,用于下载和安装Json路径jq,但为什么映像仍然显示./login.sh: line 6: jq: not found

非常感谢您的帮助

bash docker unix jsonpath
1个回答
0
投票

创建docker时,您需要安装jq sudo apt-get install jq

© www.soinside.com 2019 - 2024. All rights reserved.