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

时间:2017-12-18 01:26:32

标签: java docker nanohttpd

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

D:\Docker\JoeMicroserviceTest\src>java -jar JoeMicroserviceTest-1.0-SNAPSHOT.jar

服务器启动正常并显示:

  

服务器已启动,按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

我是这样构建的:

docker build -t joe-microservice-test .

我这样运行:

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

为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

好的,我通过添加" -dit"运行命令。这是工作运行命令:

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

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