运行 单个 docker 容器中的两个服务

Running two services in a single docker container

尽管 docker 意味着 运行 一个容器中的单个服务,但出于某种原因,我想 运行 两个在一个容器中相互通信的服务。 我有两个 spring 引导服务:Demo 和 Demo2

为此,我为 运行 两个应用程序的两个 jar 创建了一个 shell 脚本,然后将该脚本传递给 Dockerfile 的入口点。

shell 脚本 (invoke.sh)

#!/bin/bash
java -jar app.jar && java -jar app2.jar

Docker 文件

FROM openjdk:8-jdk-alpine
VOLUME /tmp

COPY demo/demo/target/demo-0.0.1-SNAPSHOT.jar app.jar
COPY demo2/demo2/target/demo2-0.0.1-SNAPSHOT.jar app2.jar

COPY invoke.sh invoke.sh

ENTRYPOINT ["sh","/invoke.sh"]

镜像创建成功。但是当我 运行 该图像时,它只启动第一个 spring 启动应用程序。

为什么它不启动 app2.jar?我应该怎么做才能启动这两个应用程序?非常感谢任何解决此问题的帮助。

一旦第一个应用程序以 退出状态 0 退出,第二个应用程序将启动。

 #!/bin/bash
java -jar app.jar && java -jar app2.jar

这保证了 jar 文件的顺序执行。