1. 程式人生 > >用docker部署分散式專案

用docker部署分散式專案

docker上面部署dubbox的分散式應用,tomcat做web容器

 

原文位置:https://blog.csdn.net/lizhenyi111/article/details/81776522

這裡只在一臺虛擬機器上面演示,用的是cantos7,用兩個docker容器部署兩個應用

Docker 要求 CentOS 系統的核心版本高於 3.10 ,檢視本頁面的前提條件來驗證你的CentOS 版本是否支援 Docker 。

這裡安裝docker就不在做介紹,可以參見文件http://www.runoob.com/docker/centos-docker-install.html

安裝好docker後,首先拉取tomcat的映象

docker search tomcat

下載stars最高的那個

docker pull docker.io/tomcat

下載完成之後 可以docker images檢視本地所有的映象

接下來要做準備工作

1.上傳tomca壓縮包到伺服器,解壓兩個tomcat到伺服器,這裡安裝兩個tomcat的目的主要是為了讓等下容器裡面的tomcat對映本地的tomcat方便後期操作

tar -zxvf apache-tomcat-8.0.52.tar.gz

給解壓後的tomcat資料夾修改名字

首先我這邊先上傳web端war包到 第一個tomcat的webapps下面

然後上傳service端到第二個tomcat的webapps下面

我上傳的這個專案是用的dubbo框架 所有還需要在本地 安裝zookeeper

2.安裝zookeeper 參考這邊文章https://www.cnblogs.com/zuolun2017/p/8186254.html

3.接下就開始構建我們的docker容器

構建第一個容器:

命令:docker run -it --name charge-service --net=host -v /usr/local/apache-tomcat-8.0.52/webapps:/usr/local/tomcat/webapps -v /usr/local/apache-tomcat-8.0.52/conf/server.xml:/usr/local/tomcat/conf/server.xml -d docker.io/tomcat

--it:執行一個在後臺執行的容器,同時,還能用控制檯管理

--name:建立容器的名字

--net=host:注意這個是關鍵 ,--net=host意思是讓容器跟宿主機使用相同的ip,容器不會虛擬出自己的網絡卡,ip,這裡配置這個的原因是因為,如果你採用預設模式建立容器,就會連不到你在虛擬機器啟動的zookeeper

-v:該命令等於是linux命令的軟連線 /usr/local/apache-tomcat-8.0.52/webapps:/usr/local/tomcat/webapps.冒號左邊是虛擬機器的tomcat的war包存放地址,右邊是容器內的war包存放在tomcat中的地址,意思就是讓容器內的tomcat的war包存放地址,指向虛擬機器的tomcat的存放地址,這樣容器內的tomcat啟動的時候實際上啟動的是在虛擬機器存放的war包

-v /usr/local/apache-tomcat-8.0.52/conf/server.xml:/usr/local/tomcat/conf/server.xml  這裡同上 是為了指向虛擬機器的tomcat的配置檔案 ,這樣就可以直接在本地該配置 不需要動容器內的tomcat

-d docker.io/tomcat :-d 的意思是用docker.io/tomcat映象建立容器,也就是之前咱們下載的tomcat映象

執行完會返回一個唯一的id

docker logs -f 容器id 檢視tomcat啟動日誌

OK,啟動完成

接下來建立第二個容器,建立過程同上類似,只不過建立時指向的本地tomcat不一樣

docker run -it --name charge-service --net=host -p 8082:8080 -v /usr/local/apache-tomcat-8.0.52/webapps:/usr/local/tomcat/webapps -d docker.io/tomcat

第二個容器 我沒有指向本地的配置檔案是因為這個採用預設的就可以了 

這時啟動的話 會報錯 埠衝突 ,所以要修改 第一個容器指向的本地tomcat配置檔案 

修改配置檔案參考這邊文章https://blog.csdn.net/kzdwts/article/details/79368188

修改完之後 重啟一下容器就可以了

dokcer stop 容器id:停止容器

docker start 容器id: 啟動容器

docker restatrt 容器id :重啟容器

service 啟動成功

web啟動成功

測試下專案的登入功能 成功登入 並返回資料!

可能寫的有點亂 有什麼不清楚的地方 可以留言告訴我 謝謝!