docker安裝tomcat&部署javaweb程序


一。docker定制簡單的java-web應用鏡像

網址:

1。jdk下載網址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

docker安裝tomcat8

基於docker安裝tomcat

docker操作鏡像

Eg1:以本地java打war包為例,構建一個鏡像

Step1:以tomcat鏡像為基礎鏡像

docker pull tomcat   //拉取tomcat鏡像
 Step2:定制鏡像 touch Dockerfile #新建Dockerfile文件 vi Dockerfile #編輯Dockerfile ##add content start FROM tomcat:latest MAINTAINER shiyufeng kaixinyufeng@sina.com COPY web-ssm-single.war /usr/local/tomcat/webapps ##add content end Step3:構建鏡像 docker build -t cfca-web:v1 . //在當前目錄,構建一個cfca-web的鏡像,tag為v1的鏡像  Step4:run鏡像為容器 docker run -d -p 8089:8080 cfca-web:v1 //-d后台守護進程 -p映射端口宿主機:容器 鏡像名  地址欄訪問:http://localhost:8089/web-ssm-single/即可。

命令行訪問:

ZBMAC-C02VX5Y7H:myLearn shiyufeng$ curl http://localhost:8089/web-ssm-single

ZBMAC-C02VX5Y7H:myLearn shiyufeng$ curl http://localhost:8089/web-ssm-single/

<html>

<body>

<h2>Hello World!</h2>

<h3><a href="/user/query">send request</a></h3>

</body>

</html>

地址欄訪問:http://localhost:8089/web-ssm-single/

成功!!!

二。實戰docker,編寫Dockerfile定制tomcat鏡像,實現web應用在線部署

參考博客源碼地址:https://github.com/zq2599/blog_demos.git 項目名:loadbalancedemo

Step1:創建空文件夾:mkdir image_tomcat

Step2:拷備apache-tomcat-7.0.86/conf目錄下的文件server.xml和tomcat-users.xml到image_tomcat目錄下面

Step3:修改server.xml

<Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

增加:URIEncoding="UTF-8" 目的:處理中文問題

Step4:修改tomcat-users.xml,增加如下內容:

<role rolename="manager-gui" />
<role rolename="manager-script" />
<user username="account001" password="password001" roles="manager-gui,manager-script" />

以上配置完成后,即可用account001賬號在對應的tomcat上進行在線部署操作了.

Step5:定制Docker鏡像

cd image_tomcat

touch Dockerfile  //創建Dockerfile文件

vim Dockerfile  //編輯Dockerfile文件

//###start 添加如下內容

#First docker file from bolingcavalry
#version 0.0.1
#Author:shiyufeng
#基礎鏡像
FROM tomcat:7.0.77-jre8

#作者
MAINTAINER shiyufeng

#定義工作目錄
ENV WORK_PATH /usr/local/tomcat/conf

#定義要替換的文件名
ENV USER_CONF_FILE_NAME tomcat-users.xml

#定義要替換的server.xml文件名
ENV SERVER_CONF_FILE_NAME server.xml

#刪除原文件tomcat-users.xml
RUN rm $WORK_PATH/$USER_CONF_FILE_NAME

#復制文件tomcat-users.xml
COPY ./$USER_CONF_FILE_NAME $WORK_PATH/

#刪除原文件server.xml
RUN rm $WORK_PATH/$SERVER_CONF_FILE_NAME

#復制文件server.xml
COPY ./$SERVER_CONF_FILE_NAME $WORK_PATH/

//###end

以上:image_tomcat目錄結構:

ZBMAC-C02VX5Y7H:image_tomcat shiyufeng$ tree
.
├── Dockerfile
├── server.xml
└── tomcat-users.xml

Step6:構建docker鏡像

//在當前目錄構建鏡像。注意后面的點為當前目錄
docker build -t tomcat001:0.0.1 .

//查看鏡像
docker image ls tomcat001

Step7:鏡像構建完畢,啟動tomcat

//啟動tomcat容器
docker run --name=tomcat001 -p 8080:8080 -e TOMCAT_SERVER_ID=tomcat_server_001 -idt tomcat001:0.0.1

/*
   --name:為容器起的別名
  
   -p:映射端口,宿主機與容器
 
*/ 

Step8:啟動瀏覽器,訪問localhost:8080,顯示tomat圖標即為啟動成功.

Step9:修改mavenl配置文件setting.xml,增加如下配置

<server>
      <id>tomcat7</id>
      <username>account001</username>
      <password>password001</password>
  </server>

以上是tomcat的tomcat-users.xml文件中配置的用戶和密碼,這樣執行maven插件的時候就能從此處取得對應的用戶名和密碼去tomcat上做操作了。

Step10:進入web工程,pom.xml目錄執行如下命令

注:剛定制的docker鏡像必須啟動狀態,才可以成功構建,否則會報“構建失敗”

mvn clean package -U -Dmaven.test.skip=true tomcat7:redeploy

執行結果如下所示,即代表tomcat7-maven-plugin插件已經幫我們把war部署到docker容器上去了

[INFO] tomcatManager status code:200, ReasonPhrase:OK
[INFO] OK - Deployed application at context path /loadbalancedemo
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.561 s
[INFO] Finished at: 2018-12-15T17:08:27+08:00
[INFO] Final Memory: 21M/216M
[INFO] ------------------------------------------------------------------------

Step11:瀏覽器輸入http://localhost:8080/loadbalancedemo/hello?name=開心玉鳳

顯示結果:

您好開心玉鳳,這是來自tomcat_server_001的問候!2018-12-16 01:51:44

效果如下所示:

 

以上:項目名稱修改為ssm-docker,修改點:

(1)右擊項目名-》Refactor-》重新命名

(2)pom.xml中修改<finalname>

(3)project structure-》相應修改項目名稱即可。

地址欄輸入:http://localhost:8080/ssm-docker/hello?name=開心玉鳳

項目應用:java-web項目(spring+springmvc+mybatis+maven架構

項目需求:定制docker鏡像,方便jenkins部署。

第一版本:應用docker定制簡單的鏡像示例,拷備方式。

touch Dockerfile

vim Dockerfile

##add content
FROM tomcat:latest
COPY ./target/cfca-web.war /usr/local/tomcat/webapps

第二版本:參考實戰docker,編寫Dockerfile定制tomcat鏡像,實現web應用在線部署

場景:搭建一台虛擬機,定制tomcat鏡像。

本機java-web項目只需要修改pom.xml文件配置

//修改url即可
<plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.2</version>
          <configuration>
            <!--<url>http://localhost:8080/manager/text</url>-->
            <url>http://192.168.99.100:8090/manager/text</url>
            <server>tomcat7</server>
            <path>/${project.artifactId}</path>
            <update>true</update>
          </configuration>
</plugin>

maven打包部署:mvn clean package -U -Dmaven.test.skip=true tomcat7:redeploy

瀏覽器訪問:http://192.168.99.100:8090/cfca/ 即可顯示index.jsp內容。(任意修改即可成功部署)

注:由於jekins部署git地址與指定的url地址不通,會出現問題:不能向指定的url中的tomcat中部署war包。

解決方案:該url通過maven命令動態傳遞

//step1:屬性配置中增加參數<maven.url>或其他如connectionUrl
<properties>
  <maven.url></maven.url>
</properties>

//Step2:修改url配置  如${connectionUrl}
<url>${maven.url}</url>

//Step3:maven部署打包命令中增加參數  或DconnectionUrl=xxx
mvn clean package -U -Dmaven.test.skip=true -Dmaven.url=http://192.168.99.100:8090/manager/text tomcat7:redeploy

項目過程遇到問題點:

執行mvn clean package -U -Dmaven.test.skip=true tomcat7:redeploy命令一直報“maven錯誤,找不到符號”

解決方案:1。Maven錯誤找不到符號   2。既使用maven編譯,又使用lib下的Jar包(本項目問題原因)

方案一:
在項目中創建一個目錄lib,然后將jar復制到該文件夾下,最后在maven編譯插件中配置如下:

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>
   <version>2.3.2</version>
   <configuration>
     <source>${jdk.version}</source>
     <target>${jdk.version}</target>
     <encoding>${project.build.sourceEncoding}</encoding>
     <!-- 新增的編譯配置參數 -->
     <compilerArguments>
       <!-- 對應jar放置在項目中的位置 -->
       <extdirs>${project.basedir}/src/main/webapp/WEB-INF/lib</extdirs>
      </compilerArguments>
    </configuration>
</plugin>

方案二:
  步驟一:模仿maven的本地倉庫目錄結構,創建類似的目錄,把二方包jar包放到創建好的目錄中;
  步驟二:在pom文件中添加本地倉庫中的二方包jar包坐標。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM