【问题标题】:Docker image to pipe std in to an executable to std out将标准输入通过管道传输到标准输出的 Docker 映像
【发布时间】:2022-07-05 19:24:55
【问题描述】:
我需要一个 Docker 映像,其中包含一个 Linux 可执行文件,当像这样运行它时,我可以将输入文件通过管道输入:
docker run --rm -i myContainer < myInputFile > myOutputFile
在我的例子中,它是可执行文件cucumber-json-formatter-linux-386,它将 NDJSON Cucumber 消息转换为 JSON 文件(例如用于Xray)。
【问题讨论】:
标签:
docker
cucumber
jira-xray
【解决方案1】:
假设您已经安装了 Docker,请创建一个文件夹,其中包含以下名为“Dockerfile”的文件:
FROM ubuntu
COPY cucumber-json-formatter-linux-386 /bin/cucumber-json-formatter-linux-386
ENTRYPOINT /bin/cucumber-json-formatter-linux-386
还将二进制文件 (cucumber-json-formatter-linux-386) 复制到同一文件夹中。
然后 cd 进入该文件夹并像这样构建容器:
docker build -t cucumber-json-formatter .
现在你可以像这样运行容器了:
docker run --rm -i cucumber-json-formatter < input.ndjson > output.json
-
--rm 参数在使用后删除容器。
- 需要参数
-i 才能正确处理输入(但不确定原因)。
我在 Windows 主机上试过这个,但在 Linux 上应该也能正常工作。