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.

  • docker-compose logs successful message
  • What does Kubernetes actually do? [closed]
  • Running and configuring mqtt broker with docker composer
  • Docker: can not access container host/port
  • Docker not allowing push to repo
  • Docker, running Macos docker image on Windows
  • 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?

  • Running docker -d fails on Ubuntu 14.04
  • WARNING: Unable to find module repositories
  • If adding a command that repeats every 10 minutes to crontab, when does the first job run?
  • SQL Server instance string connection in Linux Docker
  • Install Firefox on Tinycore (Docker)
  • Building Play App as Docker image, remapping port
  • 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.