Java Nanohttpd在Docker容器中运行时立即退出
我使用nanohttpd为HTTP服务器编写了一个简单的Java微服务。我可以从jar文件直接从Windows 10命令提示符运行它,如下所示: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 服务器启
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请求,因此它似乎没有运行。