Docker ASP.net 5 beta4 kestrel不保持容器运行

我正在玩ASP.net 5testing版4docker的形象 。 我正在使用入口点dnx /app kestrel运行容器。 Dockerfile在教程中是标准的:

 FROM microsoft/aspnet:1.0.0-beta4 MAINTAINER "xxxx" <xxxx> #this contains project.json etc COPY ./app /app WORKDIR /app RUN ["dnu", "restore"] EXPOSE 5004 ENTRYPOINT ["dnx", "/app", "kestrel"] 

容器立即启动和退出,容器的日志显示:“启动”,表示启动红隼没有错误。

我用的docker run -d -p "5004:5004" my_asp_net_5_docker_image:1.0.0命令是docker run -d -p "5004:5004" my_asp_net_5_docker_image:1.0.0

让我感到有趣的是,如果我用一个伪tty来运行容器,

 docker run -t -i -p "5004:5004" --entrypoint="/bin/bash" my_asp_net_5_docker_image:1.0.0 

然后当我在dnx /app kestrel容器中运行入口命令时,手动运行dnx /app kestrel启动,输出为“Started”并保持活动状态,我可以成功访问HelloWorld网站。 我不知道为什么这种行为差异。 为什么dnx /app kestrel当我在入口点运行它时保持容器活着,但是当它从容器内部运行时,容器保持活动状态。

更新:我在这里发现了一些有趣的东西。这是在asp.net git hub中的一个变化,它说“不需要Unix上的TTY”。 有一个“开始”后做了一个Console.ReadLine()的线,这可能是这个代码仍然在asp.net泊坞窗图像,因此它只适用于tty …

更新2:我可以通过打开stdin(-i)来得到它的工作: docker run -d -i -p "5004:5004" my_asp_net_5_docker_image:1.0.0这表明Console.ReadLine()可能是问题。 现在我解决了这个问题,但是我不认为我们应该用-i来运行容器。