Code Stone
Code Stone

Reputation: 129

How to execute jar file in docker

A jar need to deploy in docker.I know how to write Dockerfile for a running jar. this jar is a commandline option application.it has serveral arguments.and will be needed to run serveral times with different arguments. for example. It has arg1,arg2.

User can run with arg1=A,arg2=B then run with arg1=A2. No arg2.

Docker cannot run this, i have specified these arguments when they run and the container stop once the jar main task finished. I need to start another container to run jar.

Don't think this is friendly. My question is in this case, is it not suitable to deploy with docker?

Upvotes: 1

Views: 4209

Answers (2)

Mgccon
Mgccon

Reputation: 425

You can configure the container to run a script that will never end just to keep the container running. As an example you can include the following in the Dockerfile:

RUN echo 'sleep infinity' >> /bootstrap.sh && chmod +x /bootstrap.sh

You can start the container in the following way:

docker run -d --name <container-name> <image> ./bootstrap.sh

To run the jar you can use:

docker exec <container-name> java [arguments]

Having in mind it is a java program and it is OS agnostic you don't have a huge benefit in running inside a container but is possible.

Upvotes: 2

n2o
n2o

Reputation: 6477

You can use a simple "hack" for this purpose... But I do not think this is the best solution.

Start a container with a process that is not supposed to be ended soon, e.g. bash. Also, lets say you want to use the latest ubuntu image. Then you can start the container with:

$ docker run -d -it ubuntu bash

This starts a ubuntu container and keeps it running as a daemon edit: detached (-d) in the background.

Lets lookup the container's name:

$ docker ps -a
CONTAINER ID   IMAGE    COMMAND   CREATED         STATUS         NAMES
59104211e795   ubuntu   "bash"    2 seconds ago   Up 1 seconds   jolly_hawking

It is jolly_hawking. Your commands (here: ls /) can then be sent to the container with this command:

$ docker exec jolly_hawking ls /

But that is definitely not the best solution. Maybe just keep this as an example how this might work for you and how Docker containers are working.

Upvotes: 1

Related Questions