2016-12-19 25 views
2

我有一個簡單的AngularJS應用程序。後端可以像服務一樣處理(外部API),所以根本不需要服務端。我想在Docker上運行它,但是,我不確定這裏的最佳實踐是什麼。 什麼我期待實現如下:角碼應用程序與碼頭 - 生產與開發

  1. 泊塢窗應該能夠運行一切,我與當地的NodeJS做 - 使用的WebPack /咕嚕/一飲而盡,而無需安裝我的本地機器上的任何內容+確保每個團隊成員都在基本上所有內容的相同版本上工作。
  2. 泊塢窗應該能很容易地部署到生產和輕微跑越好(它只是靜態的內容!)

,真正的問題是,據我瞭解,在開發搬運工,應根據在nodejs上安裝了卷和所有東西..但是,生產docker應該是超級簡單的nginx服務器,它提供靜態內容。所以我可能會得到一個使用相同代碼庫的2個獨立的docker。不知道這是正確的方式去..

任何人都可以提供一些線索在這個話題?感謝

回答

1

你的想法似乎確定。我通常創建一個bash腳本(對我來說它足夠靈活),根據需要部署不同的環境(dev & prod)。

假定創建了一個bash腳本deployApp.sh

sh deployApp.sh `{dev or prod}` 

所以,你也可以動態創建(或交換機)Dockerfile根據您的環境以及與此Dockerfile構建應用程序。所以你可以分別管理你的prod環境需求(只有通過webpack創建的bundle才能部署到nginx)。

有關創建deployApp.sh一個例子:

webpack `{if other required parameters here}` #created bundle.js etc. 

#After webpack operations , choose Dockerfile for prod or dev : 
#./prod/Dockerfile , ./dev/Dockerfile 

#check if first parameter is prod or dev 
docker build -f ./prod/Dockerfile #this will build nginx based container 
#and copy needed files&folders 

這僅僅是根據你的想法的方法,我也喜歡使用這種方法。您只需創建一次該設置。你也可以申請另一個項目如果它是合適的。

+0

爲什麼我實際上需要bash文件?所以我們有2個dockerfiles - 我們可以相應地使用它們。例如,使用一個不錯的碼頭作曲者在本地使用開發人員,並使用另一個與詹金斯(可能有不同的預製碼頭作曲者)。我甚至可以說生產文件(dockerfile和docker-compose文件)可以由構建/部署計算機即時創建,開發人員永遠不會知道它們。你怎麼看? –

+0

@BenYitzhaki我還沒有使用碼頭組合。所以如果你知道這對於通過docker-compose.yml文件進行的操作是足夠的,當然你可以使用這種方式,但在這種情況下,bash腳本並不是必須的。 –