Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use httpie and jq within docker?

Tags:

docker

jq

httpie

How to use httpid and jq within docker?

I want to get the ip only in json result like '34.10.12.40'

docker run -it --rm blacktop/httpie -b ifconfig.co/json
{
    "country": "United States",
    "country_eu": false,
    "country_iso": "US",
    "hostname": "lqwtx.com",
    "ip": "34.10.12.40",
    "ip_decimal": 39585,
    "latitude": 35,
    "longitude": 105
}

but I've tried some ways but does not work, like blow.

docker run -it --rm blacktop/httpie ash -c "http -b ifconfig.co/json | jq '.ip’”

docker run -it --rm blacktop/httpie -b ifconfig.co/json jq '.ip'
like image 410
Leo Chu Avatar asked Jun 04 '19 23:06

Leo Chu


1 Answers

This is the dockerfile of the image you used, see this:

FROM alpine:latest

RUN apk add --no-cache jq httpie

ENTRYPOINT [ "http" ]
CMD [ "--help" ]

From above, you can see it set an entrypoint with http for this image, so all your command used in docker run will be act as parameters for http, so of course you will fail.

Next is a method for you to make use of it:

docker run -it --rm --entrypoint=/bin/sh blacktop/httpie -c "http -b ifconfig.co/json | jq '.ip'"

Sample output:

"92.121.64.197"

Above command will override the default entrypoint with /bin/sh, then you can use jq to parse output of httpie in pipeline.

like image 126
atline Avatar answered Oct 20 '22 23:10

atline