2016-03-04 48 views
3

我有一個容器,它運行帶有三個服務器的節點應用程序:一個用於公用數據的服務器和兩個webpack服務器。默認情況下,這些端口在端口3000,3001和3002上運行,但這些端口都可以配置。具有多個可配置端口的Docker容器

看來,我將能夠運行,像這樣的容器:

docker run -p 3000:3003 -p 3001:3004 -p 3002:3005 -e 'APP_PORT=3003' \ 
    -e 'NG_PORT=3004' -e 'RC_PORT=3005' --expose 3003 --expose 3004 --expose 3005 \ 
    ajcrites/webf 

但是有兩個問題的方法:

  1. 有冗餘的大量
  2. 我想要默認端口被使用/暴露如果沒有指定

是否有更簡單的方法來公開所有可配置端口,不管它們是否從默認值更改?

+0

我發表了這條評論以防萬一。 它可能不是你正在尋找的東西(我不確定我是否理解你在尋找什麼,如果這不相關,我很抱歉),但有** - P **選項可以自動分配外部端口暴露端口。 另外,您可以通過向dockerfile添加** EXPOSE **指令來公開端口。 – vmonteco

+0

yoiu不需要重複'-p',你可以指定幾個不同的端口(沒有它們連續) – Auzias

回答

2

你不希望公開所有的端口,但是你可以通過一系列因爲至少泊塢窗1.5暴露和綁定:

docker run -p 3000-3002:3003-3005 

我不認爲你需要,當你發佈使用--expose 。

+0

你是否還需要使用相同的端口號來執行'--expose'? –

+0

你也可以暴露一個範圍。 – Ray

+0

@ExplosionPills Expose只會將端口暴露給正在運行的Docker容器中的其他正在運行的服務,但不在外部,因此,如果您不需要通過docker中的端口進行鎖定,則可以始終公開大範圍的內容:http://stackoverflow.com/questions/22111060 /在不同的揭露和發佈在碼頭 – Ray

相關問題