具有脚本参数的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