How to run executable jar 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.

  • Enabling logging for rabbit mq server within a docker image
  • docker add cache when git checkout same file
  • Can I use mem_limit in docker-compose? and How?
  • How can I access a docker container via ip address
  • docker run container happens error when mapped the container's port with machine
  • Pull docker image which is not pushed to repository
  • docker cannot run this,have specified these arguments when they run.and the container stop once the jar main task finished.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 deloy with docker?

  • Different strategies for persistent container-data in docker
  • monitoring docker container performance using cadvisor / cgroup, best approach
  • How to build and run a java instance in Docker
  • Use toaster to view yocto builds
  • Simplest way of passing all host environment variables to docker container
  • ERROR: for app no such device
  • 2 Solutions collect form web for “How to run executable jar in docker”

    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.

    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.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.