如何pipe理数据到docker运行dockerified应用程序?
我通过这个Dockerfile dockerified httpie :
FROM alpine:3.6 MAINTAINER Philipp Kretzschmar <philipp.kretzschmar@gmail.com> 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"]
你也可以直接拉图像:
docker pull k0pernikus/httpie-docker-alpine:1.0.0
使用httpie作为一个独立的程序,我知道build议通过回声(简单的例子)pipe道嵌套的JSON有效载荷:
$ 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,这很好,这个问题的范围只是发送正确的请求。)
现在我认为这将等同于通过docker执行命令:
$ 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
标志docker run
,以保持stdin
打开。 比较:
$ echo hello | docker run --rm alpine cat $
至:
$ echo hello | docker run -i --rm alpine cat hello $