gpt4 book ai didi

docker - 如何在docker run上将数据管道传输到dockerified应用程序?

转载 作者:行者123 更新时间:2023-12-02 19:34:15 27 4
gpt4 key购买 nike

我已经通过此httpie Docker化了Dockerfile:

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作为独立程序,我知道建议通过echo将管道嵌套在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
$

关于docker - 如何在docker run上将数据管道传输到dockerified应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47777993/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com