我有一组测试,我想在docker容器上运行。 在测试过程中,我正在更改测试数据,我需要重新启动JETTY。
最好的方法是什么?
我可以想象一些选择:
使用SSH - 但对于docker ssh不是最好的选择。
Docker上的Python代理监听套接字 - 再暴露一个端口,连接并重新启动jetty。
也许有更好的想法?
由于
答案 0 :(得分:18)
听起来你尝试重新启动的进程是docker容器的主要进程(即你在Dockerfile中设置的进程,如果你有一个,当你运行' ps -ef&# 39;在容器内部,您会看到过程的PID设置为1)。如果是这种情况,则无法从容器内重新启动它。你应该只重启容器本身:
docker restart <container_id>
答案 1 :(得分:3)
输入容器并重新启动。
手动方式:
docker exec -it <containeridorname> /bin/bash
或自动化方式:
docker exec -it <containeridorname> /restartjettycommand.sh
答案 2 :(得分:0)
您需要使用entrypoint shell script
您将需要构建docker文件,以便可以将文件复制到容器中。
您的entrypoint.sh
或称其为runjettytests.sh
其伪代码如下:
#!/bin/sh
java -jar start.jar
$runTests
java -DSTOP.PORT=8080 -DSTOP.KEY=stop_jetty -jar start.jar --stop
cp dataset2 data/
java -jar start.jar
$runTests2
java -DSTOP.PORT=8080 -DSTOP.KEY=stop_jetty -jar start.jar --stop
exit(0)
显然,您的用例可能有所不同,但这是一个粗略的主意