我試圖將我的Play應用程序構建到端口8080上公開的Docker容器中。在端口8080上的碼頭集裝箱請求打我的播放應用程序。構建Play應用程序作爲Docker鏡像,重新映射端口
我無法這樣做。我想我可以通過將Docker端口8080映射到內部端口9000來完成,但我無法弄清楚如何使用sbt插件來完成此操作。所有我能做的就是改變使用
dockerExposedPorts := Seq(8080)
我試圖將我的Play應用程序構建到端口8080上公開的Docker容器中。在端口8080上的碼頭集裝箱請求打我的播放應用程序。構建Play應用程序作爲Docker鏡像,重新映射端口
我無法這樣做。我想我可以通過將Docker端口8080映射到內部端口9000來完成,但我無法弄清楚如何使用sbt插件來完成此操作。所有我能做的就是改變使用
dockerExposedPorts := Seq(8080)
sbt-docker只有建立泊塢窗圖像暴露的端口。公開端口是正確的,但您仍然必須將其連接到主機網絡。
爲此,您必須啓動容器並提供正確的映射。
docker run -p 9000:8080 ... yourImage ...
您有兩種選擇。第一個是開始使用默認端口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
)。
選項二爲我工作,非常感謝!我無法使用選項一,因爲我的PaaS不允許我進行端口映射。 –
不客氣 – radek1st