1. 程式人生 > >新手超詳細記錄:Docker for Windows打包製作tomcat映象並部署java web專案

新手超詳細記錄:Docker for Windows打包製作tomcat映象並部署java web專案

專案基本情況

我用的是普通的java web專案,其中採用了struts框架,沒有main函式,Makefile實在寫不出來,因此spring框架的那種打包docker的方式並不適用。
這裡寫圖片描述
開發工具用的是MyEclipse10,平常在本地執行的時候就是部署到伺服器上,將伺服器run起來就可以通過埠和專案名訪問,如localhost:8080/demo
這裡寫圖片描述

準備工作

1、下載安裝Docker for Windows

去官網直接下載exe安裝full version就可以了。

2、第一次使用Docker for Windows

下載好之後,開啟Docker QuickStart Terminal,第一次開啟,會說找不到boot2docker.iso,需要下載安裝。不知道是網路原因還是牆的原因,總是下到一半就失敗了,因此可以不在docker工具裡面下載,關掉docker工具,在外面用瀏覽器開啟

https://github.com/boot2docker/boot2docker/releases 找到最新版本下好先,再複製到C:\Users\user.docker\machine\cache\裡面,重新開啟Docker QuickStart Terminal。Waiting for an IP一會兒後,看到下面的小鯨魚才是可以開始用了。
這裡寫圖片描述

3、註冊一個docker賬戶

要上傳你自己的docker容器,首先需要有自己的docker賬戶。
https://hub.docker.com/
這個網站後面會經常用到,檢視自己的容器還有一些公共的容器都在這看。
我註冊的時候Sign up鍵一直點不了註冊不了,哪個瀏覽器都不管用,實在沒辦法翻了牆試,原來是有一個驗證身份的外掛載入不了所以沒法註冊(聽說rp好的不翻牆也刷出來了)就是一個類似12306那種驗證碼,所以如果註冊不了,估計就是要翻牆的節奏。

開始打包映象

1、將java專案匯出war包

開啟我的MyEclipse,將專案打包成war包。這個不難。
滑鼠在專案名點右鍵,選擇“Export”,出現下圖,選擇“WAR”,下一步只要再填個儲存路徑就可以匯出了。
這裡寫圖片描述

2、製作單純Tomcat映象

在本地的時候,我的專案是要在Tomcat伺服器上跑的,所以製作映象時,也必須要有Tomcat,這些官方容器庫都有的,所以直接從網上下載下來就行,開啟Docker QuickStart Terminal,輸入指令(這裡我用的是Tomcat7)

docker pull tomcat:7

相當於下載了一個tomcat映象到我本地了。使用指令 docker images 可以看到我本地的映象們。
這裡寫圖片描述


在Docker工具裡執行指令讓映象跑起來,跑起來的就可以叫做容器了。
8080:8080,前一個8080代表的是容器的埠,後一個8080代表的是Tomcat本身使用的埠。

docker run -d -p 8080:8080 tomcat

用指令先檢視是不是成功啟動了。

docker ps

這裡寫圖片描述
若想直觀一點,在瀏覽器直接開啟 分配的IP:8080,就可以看到親愛的大臉貓了。(分配的IP在一開始啟動Docker後出現的,8080是我前面定義的埠)

至此一個單純的Tomcat映象在本地製作好了。
跟在本地部署一樣,一個新的專案,只要把war包放在tomcat裡的webapps資料夾裡,tomcat會自動解壓部署的。因此重點是要知道我剛剛下載的tomcat7的映象目錄在哪。

3、部署java web專案到Tomcat映象裡

網上查半天pull下來的東西存放在哪,說在什麼usr/local/…的地方,在實際上我在自己電腦根本找不到這資料夾。輸入指令docker info也可以看到root地址,但我也找不到物理位置,遂尋求別的出路。能不能將war包用指令複製到webapps裡面去。
下面是經過實踐可行的解決辦法:
(1)保證Tomcat映象已經run起來了,記住Container ID,等下有用。
(2)假設我的war包放在了C:\Users\user\Desktop\jars\裡面,在保證(1)之後,獲得我的Tomcat的Container ID為474df972e59d,執行指令

docker cp C:/Users/user/Desktop/jars/demo.war 474df972e59d:/usr/local/tomcat/webapps

就能把war包弄進去了
/usr/local/tomcat/webapps這個地址,如果失敗了可以這樣驗證,先exec進入到容器中

docker exec -it 474df972e59d /bin/bash

然後就跟普通命令列指令一樣,可以ls看看目錄下所有檔案,然後cd開啟再ls,直到找到webapps,然後核對路徑。
這裡寫圖片描述
如果是在cp war包之後exec進入容器檢視webapps,可以看到出現了剛剛部署的demo資料夾。
要退出容器就輸入exit。
我還是喜歡視覺化的操作,到瀏覽器,輸入 分配的IP:8080/demo ,就可以開啟專案的預設頁面了。

不要太高興了,事情還沒完!這只是個本地的容器,如果關掉了容器,一切就會還原了,如果後面還要上傳到docker倉庫或者使用其他容器管理平臺的的,這還沒完呢。

剛才對容器進行了修改(copy了war包),首先要提交修改,輸入指令(474df972e59d是容器ID,ivusing/demo,‘/’前面是自己的docker賬號名,後面是給容器取的名字)

docker commit 474df972e59d ivyusing/demo

如果輸入 docker images,可以看到出現一個新的映象了。
提交完後,要push上倉庫,在這之前,要登入自己的docker賬戶
還是在docker工具輸入指令:

docker login

登入後,上傳到倉庫,輸入指令:(latest是標籤,docker images後TAG一欄就是了)

docker push ivyusing/demo:latest

至此,其他人只要docker pull ivyusing/demo,都可以下載這個容器啦~

關於資料庫

BUT,資料庫得另外弄一個容器。因為我用的是Rancher容器管理平臺直接建立的mysql容器,步驟有一點不一樣,就不詳細寫了。原理是一樣的,先下一個mysql官方容器,docker pull mysql,然後再設定資料庫的使用者名稱密碼、埠,這時候只是一個空的資料庫,再把自己的表導進去,再儲存上傳映象。
記得把原專案中資料庫的埠改成mysql容器設定的埠!!!