Java Nanohttpd在Docker容器中运行时立即退出

Java Nanohttpd在Docker容器中运行时立即退出,java,docker,nanohttpd,Java,Docker,Nanohttpd,我使用nanohttpd为HTTP服务器编写了一个简单的Java微服务。我可以从jar文件直接从Windows 10命令提示符运行它,如下所示: D:\Docker\JoeMicroserviceTest\src>java -jar JoeMicroserviceTest-1.0-SNAPSHOT.jar docker build -t joe-microservice-test . docker run -p 8080:8080 joe-microservice-test 服务器启

我使用nanohttpd为HTTP服务器编写了一个简单的Java微服务。我可以从jar文件直接从Windows 10命令提示符运行它,如下所示:

D:\Docker\JoeMicroserviceTest\src>java -jar JoeMicroserviceTest-1.0-SNAPSHOT.jar
docker build -t joe-microservice-test .
docker run -p 8080:8080 joe-microservice-test
服务器启动正常,并显示:

服务器已启动,请按Enter键停止

然后我可以对服务器发出HTTP请求,一切都很好

然后我把它放在Docker映像中,当我运行它时,容器启动,nanohttpd服务器启动,然后立即停止。这就是我所看到的:

服务器已启动,请按Enter键停止

服务器停止

在启动和停止之间几乎没有延迟。当然,我的容器会退出,因为服务器进程停止了

这是我的dockerfile:

FROM openjdk:8
COPY ./src/ /usr/src/JoeMicroserviceTest
WORKDIR /usr/src/JoeMicroserviceTest
CMD ["java","-jar","JoeMicroserviceTest-1.0-SNAPSHOT.jar"]
EXPOSE 8080
我是这样建造的:

D:\Docker\JoeMicroserviceTest\src>java -jar JoeMicroserviceTest-1.0-SNAPSHOT.jar
docker build -t joe-microservice-test .
docker run -p 8080:8080 joe-microservice-test
我是这样运行的:

D:\Docker\JoeMicroserviceTest\src>java -jar JoeMicroserviceTest-1.0-SNAPSHOT.jar
docker build -t joe-microservice-test .
docker run -p 8080:8080 joe-microservice-test

为什么会发生这种情况?

好的,我通过在run命令中添加“-dit”实现了这一点。以下是工作运行命令:

docker run -dit -p 8080:8080 joe-microservice-test

这有助于解释为什么需要它。

添加
-d
要在后台运行它(
分离
)@BMW,我刚刚试过。它输出一个长字符串,然后返回命令提示符。如果我运行“docker ps”,它不会列出任何容器,并且我不能对服务器发出任何HTTP请求,因此它似乎没有运行。