2017-10-08 80 views
0

我在8080端口上它完美,並顯示以下消息在本地運行一個簡單的阿卡HTTP服務器:阿卡HTTP過早關閉的碼頭工人,容器

Started server at 127.0.0.1:8080, press enter to kill server 

我使用sbt-assembly創建的.jar文件。它生活在target/scala-2.12/my-app-assembly-0.1.jar

然後,我創建了一個簡單的Dockerfile,如:

FROM openjdk:8u131 
ADD target/scala-2.12/my-app-assembly-0.1.jar app.jar 
ENTRYPOINT ["java", "-jar", "app.jar"] 
CMD ["-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-XX:MaxRAMFraction=1", "-XshowSettings:vm"] 

構建泊塢窗圖像:

docker build -t {my namespace}/my-app . 

並運行它:

docker run {my namespace}/my-app 

現在,還顯示:

Started server at 127.0.0.1:8080, press enter to kill server 

但是緊接着,它拋出這些錯誤和停機:

... 
[DEBUG] [10/08/2017 23:18:15.056] [default-akka.actor.default-dispatcher-7] [akka://default/system/IO-TCP/selectors/$a/0] Monitored actor [Actor[akka://default/user/StreamSupervisor-0/$$a#1560882800]] terminated 
[DEBUG] [10/08/2017 23:18:15.060] [default-akka.actor.default-dispatcher-6] [akka://default/system/IO-TCP/selectors/$a/0] Closing serverSocketChannel after being stopped 
[DEBUG] [10/08/2017 23:18:15.067] [default-akka.actor.default-dispatcher-4] [EventStream] shutting down: StandardOutLogger started 

任何想法,爲什麼會出現這種情況?

回答

3

默認情況下,Docker會關閉可能會影響您的應用的標準輸入,因爲它會提示用戶輸入:press enter to kill server

Run the container with the -i option to keep stdin open

docker run -i {my namespace}/my-app 

通常守護進程或服務器進程不應該要求這個。

+0

謝謝!就是這樣:) –