Docker Container 檔案共享

先前有提到 Angular佈署在WildFly上 可以怎麼做的其中一個方法
  
假設我們在Jenkins Container(容器) 已經測試也Build好Angular的dist檔案
那要怎麼樣把檔案丟到WildFly的容器上呢?
  
如果使用檔案傳輸等方式會需要帳號密碼,會有安全性要考量
這個時候我們可以利用Docker內建的Volumes,掛載共同的資料夾
現在,我們已有兩個容器"jboss_Backend"與"jenkins"
在docker-compose.yml所在資料夾下
還有兩個資料夾 jenkins/jboss-backend/,裡面有各自的Dockerfile
  
首先,我們需要在我們docker-compose.yml做以下設定
(1). 最下方宣告掛載的Volumes名稱 e.g., web-dist-volume
  要注意volumes跟service是同一個階層的
(2). 設定jboss-backend跟jenkins的掛載名稱與目錄名稱

  
接著,需要在jenkins資料夾下的Dockerfile加上下列幾行資訊
用root創建資料夾,比較不會遇到權限問題
最後一併把資料夾的擁有者給指定的使用者,e.g., jenkins
並且要記得切回使用者jenkins
完成之後,在該目錄下
docker build --force-rm -t jenkins/jenkins:ytTest .
force-rm 只是強迫移除掉原有的tag (如果有的話)
原有的image也不會消失,只是tag被拿掉
jenkins/jenkins是image name
ytTest則是tag
  
同樣的道理,我們在jboss-backend資料夾下的Dockerfile做類似的設定
只是這邊原有的Dockerfile就會把 ${JBOSS_HOME}下的目錄擁有者設成jboss
所以就不用特別調整
完成後,一樣要下
docker build --force-rm -t jboss/wildfly:ytTest .
最後再到docker-compose.yml目錄下執行docker-compose up
這樣子,就能夠在兩者之間分享檔案啦!

留言