iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 19
0
DevOps

用30天來介紹和使用 Docker系列 第 19

Day19:使用 Docker 的 Volume 來部署 war 檔

前二天已經介紹了如何的使用 Docker Volume 的功能來做到資料共享資料的效果。今天來 Demo 如何使用透過 Docker Volume 的功能來部署程式,因為像是開發 Java EE 的專案,會把 Build 完之後的 war 檔,傳到像是 Tomcat Service 的地方去執行。

我們在開發的過程中直接把 war 檔包進去 Docker Image 之後,如果發現程式需要修改,那改完之後就需要重新 Build Image 以及重新啟動 Container,這樣有點麻煩,如果能夠把放 war 檔的資料夾共享在實體主機上的資料夾,這樣只要把改完的 war 檔重新的放在實體主機上的資料夾,就可以不用重 Build Image 以及重新啟動 Container。

今天就來 Demo 把第5天撰寫的 Dockerfile稍微做一點小修改,然後開一個共享的資料夾,之後就把 Jenkins 的 war 檔複製到共享資料夾的資料夾路徑裡測試是否能通過 Docker Volume 的方式來部署 war 檔。

一. Dockerfile 如下

FROM java

MAINTAINER jack

RUN apt-get update && apt-get install -y wget

RUN cd /

RUN wget http://apache.stu.edu.tw/tomcat/tomcat-7/v7.0.82/bin/apache-tomcat-7.0.82.tar.gz
RUN tar zxvf apache-tomcat-7.0.82.tar.gz

VOLUME ["/apache-tomcat-7.0.82/webapps"]

CMD ["/apache-tomcat-7.0.82/bin/catalina.sh", "run"]

這裡使用的 Base Image 修改成 java 這樣就不用下載 JDK 以及設定 JAVA_HOME 的環境變數,另外在 Dockerfile 使用 VOLUME 指令,把放 war 的資料夾可以分享在實體主機的資料夾裡。

二. Build Docker Image,指令如下

$ docker build -t tomcatserver .

這裡指定的 Image Name 為 tomcatserver
執行的畫面如下
https://ithelp.ithome.com.tw/upload/images/20171222/20103456ZuW5p7fVGv.png

三. 使用 Build 完成的 Docker Image,執行 Docker container

$ docker run -d --name tomcat -p 8080:8080 tomcatserver

四. 使用 docker inspect 指令,找到實體資料夾的路徑

$ docker inspect -f '{{.Mounts}}' tomcat

tomcat 為 Container Name
執行畫面如下
https://ithelp.ithome.com.tw/upload/images/20171222/20103456CwwxzTqpFr.png

五. 查詢檔案路徑後就可以下載 Jenskin 的 war 檔,放到實體資料夾的路徑裡,畫面如下
https://ithelp.ithome.com.tw/upload/images/20171222/201034563YogC3EVN7.png

六. 使用 Browser 連到以下的 URL
http://10.1.3.243:8080/jenkins,IP 為實體主機的 IP
https://ithelp.ithome.com.tw/upload/images/20171222/20103456t5B0JepiAp.png

七. 看到以上的畫面需要輸入 Jenkins 認證的密碼,所以需要執行 docker exec 指令把 Container 上的密碼印出來,指令和畫面如下

$ docker exec tomcat cat /root/.jenkins/secrets/initialAdminPassword

https://ithelp.ithome.com.tw/upload/images/20171222/20103456dOdNhIjl9Z.png

docker exec 後面的 tomcat 是 Container Name,也可以使用 ContainerID 的方式

以上就可以取得密碼的認證碼,認證成功之後畫面如下
https://ithelp.ithome.com.tw/upload/images/20171222/20103456ZmAdULgPq3.png

今天主要是介紹使用 Docker Volume 拿來部署程式的另外一種應用,明天要介紹有關於 Docker 的網路設定這一個部份。


上一篇
Day18:使用 Docker Volume 的功能 (二)
下一篇
Day20:介紹 Docker 的 Network (一)
系列文
用30天來介紹和使用 Docker30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言