jar需要在docker中部署。我知道如何为正在运行的jar编写Dockerfile。 这个jar是一个命令行选项application.it有几个参数。并且需要使用不同的参数运行几次。 例如.it有arg1,arg2。
用户可以使用arg1 = A,arg2 = B运行 运行arg1 = A2.No arg2。
docker无法运行它,在运行时指定了这些参数。容器在jar主任务完成后停止。需要启动另一个容器来运行jar。
不要认为这是友好的。我的问题是
在这种情况下,是否不适合使用docker进行部署?
答案 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容器如何工作。