我有一个脚本,我想用它来使用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)
不幸的是,这不起作用,我没有输出.
谷歌搜索我看到可能的解决方案,但没有任何工作......
有什么建议?
谢谢
我正在编写一个运行如下的 C++ 程序:
./program data_file config_file
Run Code Online (Sandbox Code Playgroud)
我想和它一起使用 docker。我写了以下内容Dockerfile:
FROM gcc:7.2.0
ENV MYP /repo
WORKDIR ${MYP}
COPY . ${MYP}
RUN /bin/sh -c 'make'
ENTRYPOINT ["./program"]
CMD ["file1", "file2"]
Run Code Online (Sandbox Code Playgroud)
所以我docker build -t test .使用它并使用docker run test默认值查看一切正常。
但是,如果我file1在我的工作目录中修改(构建之后),我注意到当我运行时docker run test file1 file2,被file1调用的是容器内的那个,作为参数输入的那个被忽略了。
同样,如果我使用重命名的数据和配置文件并运行docker run test file3 file4,我会收到一条错误消息,指出这些文件不存在(因为它们不在容器中)。
那么,如何让 docker 识别这些作为参数传递的输入文件,避免使用图像中包含的文件?
Docker 版本为 18.04.0-ce,构建 3d479c0af6。
编辑
另一种选择是使用如下launch.sh脚本:
#!/bin/sh
./program "${DATA_FILE}" "${CONFIG_FILE}"
Run Code Online (Sandbox Code Playgroud)
所以ENTRYPOINT和 …