尽管Docker应该在一个容器中运行一个服务,但出于某种原因,我希望在一个容器中运行两个相互通信的服务。演示和演示2
为此,我创建了一个shell脚本来运行两个应用程序的两个jar,然后将该脚本传递给Dockerfile的入口点。
shell程序档(invoke.sh)
#!/bin/bash
java -jar app.jar && java -jar app2.jar
停靠文件
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 Boot 应用程序。
为什么它不能启动app2.jar?我该怎么做才能启动这两个应用程序?任何帮助解决这个问题的人都将非常感激。
2条答案
按热度按时间m3eecexj1#
一旦第一个应用程序以退出状态0退出,第二个应用程序将启动。
这保证了jar文件的顺序执行。
yzckvree2#
将双&号替换为单&号:
java -jar app.jar & java -jar app2.jar
它将并行运行两个应用程序。当然,日志中会有一点混乱。