2017-02-23 46 views
0

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入口點傳遞腳本參數?

回答

4

--entrypoint只允許指定一個字符串,該字符串被解釋爲要啓動的二進制文件的名稱/路徑。這與Dockerfile中指定的不同,因爲它允許指定json數組。

此外,Dockerfiles中的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