具有脚本参数的Docker入口点

Dockerfile我们可以定义入口点如下:

 From Wildfly ENTRYPOINT["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0"] 

但我想通过入口点,而我们启动容器与一些参数如下: –

 docker run -it --entrypoint /opt/jboss/wildfly/bin/standalone.sh -Ddb_driver=mysql -b 0.0.0.0 -Duser=root Wildfly 

但它不工作,因为docker试图评估脚本参数(-D和-b)作为docker命令参数。 我在报价中给出了入口点,但是它不起作用。

我怎样才能在docker入口处传递脚本参数?

--entrypoint只允许指定一个单独的string,将其解释为要启动的二进制文件的名称/path。 这与Dockerfile中指定的不同,因为它允许指定json数组。

此外, ENTRYPOINT中的ENTRYPOINT实际上为您使用它的目的提供了不同的目的。 ENTRYPOINT只应该指定要调用的条目二进制文件,而CMD指定该二进制文件的参数。 如果没有指定ENTRYPOINT ,则CMD成为入口点,同时也包含参数。

这应该为你工作:

 ENTRYPOINT ["/opt/jboss/wildfly/bin/standalone.sh"] CMD ["-b", "0.0.0.0"] 

docker run现在不带参数被调用时,它将使用CMD的值作为入口点的参数。 当使用参数调用它时,指定的参数将附加到入口点,而不是在CMD中定义的参数。 例如:

 docker run -it Wildfly -Ddb_driver=mysql -b 0.0.0.0 -Duser=root 

会跑:

 /opt/jboss/wildfly/bin/standalone.sh -Ddb_driver=mysql -b 0.0.0.0 -Duser=root