2017-12-12 5 views
1

나는이 Dockerfile를 통해 httpie을 dockerified 한 : 나는이 중첩 된 JSON에서 파이프에 추천 알고, 독립 프로그램으로 httpie을 사용도커에서 데이터를 도킹 된 앱에 파이프하는 방법은 무엇입니까?

docker pull k0pernikus/httpie-docker-alpine:1.0.0 

:

FROM alpine:3.6 
MAINTAINER Philipp Kretzschmar <[email protected]> 
ENV LAST_UPDATED=2017-06-01 
ARG XDG_CACHE_HOME=/tmp/cache/ 
RUN apk update && \ 
    apk add py-pip && pip install httpie && \ 
    rm -rf /var/cache/apk/* 
CMD ["--help"] 
ENTRYPOINT ["/usr/bin/http"] 

당신은 직접 이미지를 당길 수 에코를 통한 페이로드 (단순화 된 예) :

$ echo '{"property":"value"}' | http PUT https://jsonplaceholder.typicode.com -vvv 

그리고 자세한 출력 플래그 -vvv httpie는 페이로드가 실제로 요청에 보냈 음을 보여줍니다

PUT /posts HTTP/1.1 
Accept: application/json, */* 
Accept-Encoding: gzip, deflate 
Connection: keep-alive 
Content-Length: 21 
Content-Type: application/json 
Host: jsonplaceholder.typicode.com 
User-Agent: HTTPie/0.9.9 

{ 
    "property": "value" 
} 

합니다 (jsonplaceholder URL이 잘되는, (404)를 반환합니다. 이 질문의 범위는 적절한 요청을 전송에 관한 것입니다)

지금 나는 그것을 통해 고정 표시기를 통해 명령을 실행할 해당 될 것이라고 생각했다.

$ echo '{"property":"value"}' | docker run k0pernikus/httpie-docker-alpine:1.0.0 PUT https://jsonplaceholder.typicode.com -vvv 

그러나 요청이없이 보내되었다는 자세한 플래그 보고서 페이로드 :

PUT/HTTP/1.1 
Content-Length: 0 
Accept-Encoding: gzip, deflate 
Host: jsonplaceholder.typicode.com 
Accept: */* 
User-Agent: HTTPie/0.9.9 
Connection: keep-alive 

어떻게 할 수있는 docker run 명령에 대한 데이터 I 파이프?

답변

1

stdin을 열어 두려면 에 -i 플래그를 사용해야합니다. 비교 :

$ echo hello | docker run --rm alpine cat 
$ 

에 :

$ echo hello | docker run -i --rm alpine cat 
hello 
$ 
+0

나는이 시도 것을 기록하고 있었다. 그런 다음, httpie 명령에 플래그를 추가하는 중임을 알게되었습니다. m) – k0pernikus

관련 문제