2015-11-02 48 views
1

我試圖將我的Pl​​ay應用程序構建到端口8080上公開的Docker容器中。在端口8080上的碼頭集裝箱請求打我的播放應用程序。構建Play應用程序作爲Docker鏡像,重新映射端口

我無法這樣做。我想我可以通過將Docker端口8080映射到內部端口9000來完成,但我無法弄清楚如何使用sbt插件來完成此操作。所有我能做的就是改變使用

dockerExposedPorts := Seq(8080) 

回答

2

sbt-docker只有建立泊塢窗圖像暴露的端口。公開端口是正確的,但您仍然必須將其連接到主機網絡。

爲此,您必須啓動容器並提供正確的映射。

docker run -p 9000:8080 ... yourImage ... 
1

您有兩種選擇。第一個是開始使用默認端口9000的播放應用程序和運行容器時使用泊塢端口映射,使來自8080端口外容器的重定向到端口9000的容器內:

docker run -p 8080:9000 yourimage 

選項二是編輯您的application.conf和改變生產端口爲8080:

# production 
play.server.http.port = "8080" 

之後已經做它,改變dockerExposedPorts

dockerExposedPorts := Seq(8080) 

請注意,它仍將在開發模式下的端口9000上運行(activator run)。

+0

選項二爲我工作,非常感謝!我無法使用選項一,因爲我的PaaS不允許我進行端口映射。 –

+0

不客氣 – radek1st