根据 docker 运行 命令启动 java 进程

Launch java processes upon docker run command

我有一个包含自定义文件和二进制文件的 docker 图像。我希望能够 运行 一个带有此图像的 docker 容器,并在启动容器时启动 2 java 个进程。

目前我正在手动进行:

docker run -i -t -p 4444:4444 6b23ccf3402c

然后,在我进入我的容器后,我将启动我的 java 进程:

java -jar /app/grid/hint-selenium-server-standalone-1.0.6-jar-with-dependencies.jar -role hub -hubConfig /app/grid/hubConfig.json -log /app/grid/logs/hub.log &

java -Dwebdriver.chrome.driver=/app/node/drivers/chromedriver -Dwebdriver.gecko.driver=/app/node/drivers/geckodriver -Dphantomjs.binary.path=/app/node/drivers/phantomjs -jar /app/node/hint-selenium-server-standalone-1.0.6-jar-with-dependencies.jar -role node -hub http://172.17.0.2:4444/grid/register/ -nodeConfig /app/node/nodeConfig.json -log /app/node/logs/node.log &

我的问题是,如何在一个 "docker run" 命令中完成?

您可以通过以下方式实现:

docker run -i -t -p 4444:4444 6b23ccf3402c bash -c "java -jar [...] & java -jar [...] & bash"

但您也可以在 Dockerfile

中使用 CMD statement
CMD java -jar [...] & java -jar [...] & bash

比运行docker run -it 6b23ccf3402c