如何让docker容器从stdin读取?

phi*_*son 8 docker

我有一个脚本,我想用它来使用Sigil(基于Go的模板引擎)来填充模板文件

我正在使用一个dockerized sigil来实现这个目的:

docker run -v ${TEMPLATE_DIR}:/tmp/sigil mikegrass/gliderlabs_sigil-docker/sigil -f prometheus-configmap.yaml -p API_SERVER=$api_server_url > $TEMP_FILE
Run Code Online (Sandbox Code Playgroud)

这似乎有点笨重,不得不映射一个卷,所以我宁愿使用STDIN传入文件....

所以我想要的是

cat ./prometheus-configmap.yaml | docker run mikegrass/gliderlabs_sigil-docker -p API_SERVER=$api_server_url > $TEMP_FILE
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用,我没有输出.

谷歌搜索我看到可能的解决方案,但没有任何工作......

有什么建议?

谢谢

And*_*inn 14

您需要使用--interactive或以交互模式运行容器-i:

cat ./prometheus-configmap.yaml | docker run -i mikegrass/gliderlabs_sigil-docker -p API_SERVER=$api_server_url > $TEMP_FILE
Run Code Online (Sandbox Code Playgroud)