1. 程式人生 > >docker構建隨容器啟動而啟動的web服務

docker構建隨容器啟動而啟動的web服務

背景

 基於jdk1.7.0_79,tomcat7.0,映象centos:6.9這些資源,通過命令:

docker run -it -p 8080:8080 --name tomcat -v /home/tomcat:/home/tomcat centos:6.9 bin/bash

 建立了容器tomcat,進入容器後,進入到容器的/home/tomcat目錄下,解壓壓縮檔案,把檔案移動到容器的/usr/local目錄下面。vi /etc/profile新增java與tomcat環境設定。

  上面簡略構建了tomcat容器。然後退出容器:exit,執行:

docker commit tomcat centos:tomcat

  基於映象centos:6.9映象建立新的版本:centos:tomcat。

  本人有個專案,專案的war包是:rest.war。我把war包放入宿主機的/home/tomcat目錄下,執行命令:

docker run -id -p 8081:8080 --name rest -v /home/tomcat:/home/tomcat centos:tomcat

  建立新的容器rest並在後臺執行,執行:

docker exec -it rest bash

  進入容器,進入到/home/tomcat,解壓rest.war包,到rest目錄下:


cd /home/tomcat
mkdir rest
cd rest
cp ../rest.war .
rm -rf ../rest.war
jar -xvf rest.war

 然後在tomcat目錄下的server.xml新增如下:

<Context path="rest" docBase="/home/tomcat/rest" allowLinking="true"></Context>

上述配置完畢後,在宿主機執行命令:

docker  exec -it rest /usr/local/tomcat7.0/bin/catalina.sh run

一直提示:/rest,記憶體洩漏(memery leak),進入容器執行啟動tomcat正常。

操作

  由於我要通過jenkins整合,上述那個是不滿足我後期要求的。就進行centos:tomcat,我寫了個簡單的Dockerfile,在啟動容器時就能啟動tomcat服務。Dockerfile如下:

FROM centos:tomcat
CMD /usr/local/tomcat7.0/bin/catalina.sh run
進入到Dokcerfile所在目錄,執行命令:
docker build -t centos:rest .

執行成功後。執行命令:docker container ls -a,檢視所有容器。執行名:docker container rm -f rest,強制刪除容器rest。

然後執行命令:docker container prune ,刪除所有容器。容器刪除成功後,執行命令:

docker run -id -p 8080:8080 --name rest -v /home/tomcat:/home/tomcat centos:rest 

這個時候在宿主機執行命令:ifconfig,檢視宿主機ip,假如為:192.168.78.12,在瀏覽器輸入:http://192.168.78.12:8080/rest,能成功進入到rest的wen頁面。

通過docker start rest啟動web服務,通過docker stop rest關閉web服務。這兩個命令在jenkins中整合打包部署war包時,在shell中是很好用的!

以上是操作例項,在內網,無法截圖,如果有問題,可以加群,進行討論!