如何在docker中运行可执行jar

时间:2016-10-04 11:23:45

标签: docker jar

jar需要在docker中部署。我知道如何为正在运行的jar编写Dockerfile。 这个jar是一个命令行选项application.it有几个参数。并且需要使用不同的参数运行几次。 例如.it有arg1,arg2。

用户可以使用arg1 = A,arg2 = B运行 运行arg1 = A2.No arg2。

docker无法运行它,在运行时指定了这些参数。容器在jar主任务完成后停止。需要启动另一个容器来运行jar。

不要认为这是友好的。我的问题是

在这种情况下,是否不适合使用docker进行部署?

2 个答案:

答案 0 :(得分:1)

您可以将容器配置为运行永远不会仅为了保持容器运行的脚本。 例如,您可以在Dockerfile中包含以下内容:

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

您可以通过以下方式启动容器:

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

要运行jar,您可以使用:

docker exec <container-name> java [arguments]

考虑到它是一个java程序,它与操作系统无关,你在集装箱内运行并没有很大的好处但是可能。

答案 1 :(得分:0)

你可以使用一个简单的&#34; hack&#34;为了这个目的...但我不认为这是最好的解决方案。

启动一个容器,其中包含一个不应该很快结束的进程,例如: bash。另外,假设您要使用最新的ubuntu映像。然后你可以用:

启动容器
$ docker run -d -it ubuntu bash

这将启动一个ubuntu容器并使其在后台运行作为守护程序编辑:分离(-d)。

让我们查看容器的名称:

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

jolly_hawking 。然后可以使用以下命令将命令(此处:ls /)发送到容器:

$ docker exec jolly_hawking ls /

但这绝对不是最好的解决方案。也许只是以此为例来说明这可能对您有用以及Docker容器如何工作。