在Dockerfile我们可以定义入口点如下: -
From Wildfly
ENTRYPOINT["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0"]
Run Code Online (Sandbox Code Playgroud)
但是我想在我们使用以下参数启动容器时传递入口点:-
docker run -it --entrypoint /opt/jboss/wildfly/bin/standalone.sh -Ddb_driver=mysql -b 0.0.0.0 -Duser=root Wildfly
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为 docker 尝试将脚本参数(-D 和 -b)评估为 docker 命令参数。我也在引用中给出了入口点,但它不起作用。
如何在 docker 入口点中传递脚本参数?
--entrypoint只允许指定一个字符串,该字符串被解释为要启动的二进制文件的名称/路径。这与您可以在 Dockerfile 中指定的不同,因为它允许指定 json 数组。
此外,ENTRYPOINT在 Dockerfiles 中,实际上与您使用它的目的不同。ENTRYPOINT应该只指定要调用的条目二进制文件,而CMD指定该二进制文件的参数。如果没有ENTRYPOINT指定,则CMD成为入口点,同时还包含参数。
这应该适合你:
ENTRYPOINT ["/opt/jboss/wildfly/bin/standalone.sh"]
CMD ["-b", "0.0.0.0"]
Run Code Online (Sandbox Code Playgroud)
docker run现在在不带参数的情况下调用时,它将使用 的值CMD作为入口点的参数。当使用参数调用它时,指定的参数将附加到入口点而不是CMD. 例如:
docker run -it Wildfly -Ddb_driver=mysql -b 0.0.0.0 -Duser=root
Run Code Online (Sandbox Code Playgroud)
会跑:
/opt/jboss/wildfly/bin/standalone.sh -Ddb_driver=mysql -b 0.0.0.0 -Duser=root
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1249 次 |
| 最近记录: |