SergiiKozlov
SergiiKozlov

Reputation: 831

Docker: how to restart process inside of container?

I have a set of tests which I would like to run on docker container. In the middle of the tests I am changing me test data and I need to restart JETTY.

What is the best way to do that?

I can imagine some options:

  1. With SSH - but for the docker ssh is not the best option.

  2. Python agent on docker to listen sockets - expose one more port, connect and restart jetty.

Maybe there are better ideas for that?

Thanks

Upvotes: 23

Views: 54858

Answers (3)

Zee303
Zee303

Reputation: 32

you need to use an entrypoint shell script you will need to build your docker file so that you can copy the files in to the container.

your entrypoint.sh or call it runjettytests.sh

pseudo code for that will look like:

#!/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)

clearly your use case may vary but thats a rough idea

Upvotes: 0

Rob Bailey
Rob Bailey

Reputation: 1787

Sounds like the process you're trying to restart is the primary process for the docker container (ie. the one you set in your Dockerfile if you have one, and when you run 'ps -ef' inside the container you would see the PID for your process set to 1). If this is the case, then you cannot restart it from inside the container. You should just restart the container itself:

docker restart <container_id>

Upvotes: 34

user2105103
user2105103

Reputation: 13125

Enter the container and restart it.

Manual Way:

docker exec -it <containeridorname> /bin/bash

Or Automated Way:

docker exec -it <containeridorname> /restartjettycommand.sh

Upvotes: 2

Related Questions