根据 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
我有一个包含自定义文件和二进制文件的 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 statementCMD java -jar [...] & java -jar [...] & bash
比运行docker run -it 6b23ccf3402c