我有接受参数 -a -b 的入口点 shell 脚本。
我有工作 docker-compose.yml 文件,我在其中用指令覆盖了 tomcat 的入口点:
entrypoint: /usr/local/tomcat/entrypoint.sh -a param1 -b param2
什么是 docker run 替代方案?
docker run --entrypoint "/usr/local/tomcat/entrypoint.sh -a param1 -b param2" tomcat:jre8
不工作
我得到:
docker: Error response from daemon:
invalid header field value "oci runtime error: container_linux.go:247:
starting container process caused \"exec:
\\\"/usr/local/tomcat/entrypoint.sh -a param1 -b param2\\\":
stat /usr/local/tomcat/entrypoint.sh -a param1 -b param2:
no such file or directory\"\n".
供参考:
docker run --entrypoint "/usr/local/tomcat/entrypoint.sh" tomcat:jre8
从 Docker 的角度工作,但显然脚本失败
原文由 Patrik Mihalčin 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是因为您在命令周围使用了引号。
当您运行
docker run --entrypoint "/usr/local/tomcat/entrypoint.sh -a param1 -b param2" tomcat:jre8
时,Docker 将这些引号中的任何内容视为单个脚本文件。从错误中可以看出:
它试图在运行之前对文件执行
stat
,所以它知道它是否存在。将参数放在 docker 命令的末尾,如下所示:
你的命令变成:
查看官方文档中的代码片段:
https://docs.docker.com/engine/reference/run/#/entrypoint-default-command-to-execute-at-runtime