[我现在尝试在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
?
非常感谢您的帮助
创建docker时,您需要安装jq sudo apt-get install jq