自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺析Docker構建SpringBoot應用

系統(tǒng)
Maven是一個強大的項目管理與構建工具。如果可以使用Maven構建Docker鏡像,以下幾款Maven的Docker插件比較常用。

[[361275]]

 1.基于Dockerfile構建SpringBoot鏡像

1.1準備工作

將SpringBoot項目通過maven打成jar包: mvn clean package

1.2使用Dockerfile構建鏡像

  • step1 在存放jar所在目錄下創(chuàng)建Dockerfile文件
  1. touch Dockerfile 
  • step2 編輯Dockerfile增加以下內容
  1. FROM java:8 
  2. MAINTAINER  niugang<863263957@qq.com> 
  3. RUN mkdir -p /opt/springapp 
  4. ADD   demo-0.0.1.jar  /opt/springapp 
  5. EXPOSE 8088 
  6. ENTRYPOINT ["java","-jar","/opt/springapp/demo-0.0.1.jar"
  •  step3 構建鏡像 
  1. docker build -t springbootdemo:1.0 . 
  • step4 啟動容器
  1. docker run -d  -p 8088:8088 --name sb springbootdemo:1.0  

在啟動容器是可以添加數據卷,程序日志映射到宿主機,方便后期排查問題

注意:在啟動過程中,一直起不起來,然后通過前臺啟動查看了日志。

報了如下錯誤:WARNING: IPv4 forwarding is disabled. Networking will not work.

解決:需要做如下配置

  1. vim/etc/sysctl.conf 
  2.  
  3. net.ipv4.ip_forward=1 #添加這段代碼 

 重啟network服務 

  1. systemctl restart network && systemctl restart docker 

查看是否修改成功 (備注:返回1,就是成功)

  1. [root@docker-node2 ~]# sysctl net.ipv4.ip_forward 
  2. net.ipv4.ip_forward = 1 
  •  step5 調用你的springboot應用,驗證其是否正確

2.使用Maven插件構建Docker鏡像

Maven是一個強大的項目管理與構建工具。如果可以使用Maven構建Docker鏡像,以下幾款Maven的Docker插件比較常用。

插件名稱 官方地址 docker-maven-plugin https://github.com/spotify/docker-maven-plugin

上面插件可以從github看到此插件已經不再推薦了。推薦使用

https://github.com/spotify/dockerfile-maven 具體操作步驟上面有介紹

docker-maven-plugin https://github.com/fabric8io/docker-maven-plugin

docker-maven-plugin https://github.com/bibryam/docker-maven-plugin

2.1直接配置方式

  • step 1

在你的springboot應用的pom.xml中增加如下配置

  1. <plugin> 
  2.                <groupId>com.spotify</groupId> 
  3.                <artifactId>docker-maven-plugin</artifactId> 
  4.                <version>0.4.13</version> 
  5.                <configuration> 
  6.                    <!--用于指定鏡像名稱--> 
  7.                    <imageName>niugang/springboot:3.0</imageName> 
  8.                    <!--用于指定基礎鏡像,類似于Dockerfile中的FROM指令。--> 
  9.                    <baseImage>java</baseImage> 
  10.                    <!--類似于Dockerfile的ENTRYPOINT指令--> 
  11.                    <entryPoint>["java""-jar""/${project.build.finalName}.jar"]</entryPoint> 
  12.                    <resources> 
  13.                        <resource> 
  14.                            <!--將打包后的資源文件復制到該目錄--> 
  15.                            <targetPath>/</targetPath> 
  16.                            <!--需要復制的文件所在目錄,maven打包的應用jar包保存在target目錄下面--> 
  17.                            <directory>${project.build.directory}</directory> 
  18.                            <!--需要復制的文件,打包好的應用jar包。--> 
  19.                            <include>${project.build.finalName}.jar</include> 
  20.                        </resource>    
  21.                    </resources> 
  22.                </configuration> 
  23.            </plugin> 

 簡要說明一下插件的配置:

  1. imageName:用于指定鏡像名稱,其中niugang是倉庫名稱,springboot是鏡像名稱,3.0是標簽名稱
  2. baseImage:用于指定基礎鏡像,類似于Dockerfile中的FROM指令。
  3. entrypoint:類似于Dockerfile的ENTRYPOINT指令。
  4. resources.resource.directory:用于指定需要復制的根目錄,${project.build.directory}表示target目錄。
  5. resources.resource.include:用于指定需要復制的文件。${project.build.finalName}.jar指的是打包后的jar包文件。
  • step2 進入代碼路徑下,執(zhí)行如下命令
  1. mvn clean package docker:build 
  • step3 查看鏡像

  • step4 啟動容器
  1. docker run  -d -p 8088:8088 --name myspringboot niugang/springboot:3.0 
  • step5 訪問測試

2.2 讀取Dockerfile進行構建

在2.1中只需要在pom.xm中配置,執(zhí)行命令就可以生成docker鏡像。在很多時候希望通過Dockerfile生成Docker鏡像。

  • step1 在項目src/main/resources目錄下新建docker文件夾,在文件夾下新建Dockerfile文件,增加如下內容
  1. FROM java:8 
  2. MAINTAINER niugang<863263957@qq.com> 
  3. RUN  mkdir -p /docker/images 
  4. ADD demo-0.0.1-SNAPSHOT.jar /docker/images 
  5. ENTRYPOINT ["java","-jar","/docker/images/demo-0.0.1-SNAPSHOT.jar"
  •  step2 pom.xml修改為如下

  1. <plugin> 
  2.                <groupId>com.spotify</groupId> 
  3.                <artifactId>docker-maven-plugin</artifactId> 
  4.                <version>0.4.13</version> 
  5.                <configuration> 
  6.                    <!--用于指定鏡像名稱--> 
  7.                    <imageName>niugang/springboot:4.0</imageName>             <dockerDirectory>${project.basedir}/src/main/resources/docker</dockerDirectory> 
  8.                    <resources> 
  9.                        <resource> 
  10.                            <!--將打包后的資源文件復制到該目錄--> 
  11.                            <targetPath>/</targetPath> 
  12.                            <!--需要復制的文件所在目錄,maven打包的應用jar包保存在target目錄下面--> 
  13.                            <directory>${project.build.directory}</directory> 
  14.                            <!--需要復制的文件,打包好的應用jar包。--> 
  15.                            <include>${project.build.finalName}.jar</include> 
  16.                        </resource>    
  17.                    </resources> 
  18.                </configuration> 
  19.            </plugin>  

 可以看到,不再制定baseImage和entrypoint,而是使用dockerDirectory指定Dockerfile所在路徑。即時指定了baseImage和entrypoint也將被忽略。

  • step3 進入代碼路徑下,執(zhí)行如下命令
  1. mvn clean package docker:build 

查看鏡像

  1. docker images 
  • step4 啟動容器
  1. docker run  -d -p 8088:8088 --name myspringboot niugang/springboot:4.0 
  • step5 訪問測試

2.3 將插件綁定在某個phase執(zhí)行

很多場景下,我們有這樣的需求,執(zhí)行例如 mvn clean package 時,插件就自動為我們構建Docker鏡像。要想實現(xiàn)這點,我們只需將插件的goal綁定在某個phase即可。

phase和goal可以這樣理解:maven命令格式是: mvn phase:goal ,例如 mvnpackagedocker:build 。那么,package和docker都是phase,build則是goal。

  • step1 編輯pom.xml 內容如下

  1. <plugin> 
  2.                 <groupId>com.spotify</groupId> 
  3.                 <artifactId>docker-maven-plugin</artifactId> 
  4.                 <version>0.4.13</version> 
  5.                <executions> 
  6.                    <execution> 
  7.                        <id>build-images</id> 
  8.                        <phase>package</phase> 
  9.                        <goals> 
  10.                            <goal>build</goal> 
  11.                        </goals> 
  12.                    </execution> 
  13.                </executions> 
  14.                 <configuration> 
  15.                     <!--用于指定鏡像名稱--> 
  16.                     <imageName>niugang/springboot:5.0</imageName>                    <dockerDirectory>${project.basedir}/src/main/resources/docker</dockerDirectory> 
  17.                     <resources> 
  18.                         <resource> 
  19.                             <!--將打包后的資源文件復制到該目錄--> 
  20.                             <targetPath>/</targetPath> 
  21.                             <!--需要復制的文件所在目錄,maven打包的應用jar包保存在target目錄下面--> 
  22.                             <directory>${project.build.directory}</directory> 
  23.                             <!--需要復制的文件,打包好的應用jar包。--> 
  24.                             <include>${project.build.finalName}.jar</include> 
  25.                         </resource>  
  26.                     </resources> 
  27.                 </configuration> 
  28.             </plugin> 

  •  step2進入代碼路徑下,執(zhí)行如下命令
  1. mvn clean package 
  • step3 查看鏡像

由配置可知,我們只需添加如下配置:

  1. <executions> 
  2.   <execution> 
  3.     <id>build-image</id> 
  4.     <phase>package</phase> 
  5.     <goals> 
  6.       <goal>build</goal> 
  7.     </goals> 
  8.   </execution> 
  9. </executions> 

 就可將插件綁定在package這個phase上。也就是說,用戶只需執(zhí)行 mvn package ,就會自動執(zhí)行 mvn docker:build 。當然,讀者也可按照需求,將插件綁定到其他的phase。

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2016-07-01 14:43:32

DockerServerless

2024-07-26 10:28:51

2023-06-25 08:12:02

2009-07-07 17:51:50

Java Servle

2009-07-15 14:21:03

MyEclipse S

2024-05-06 08:07:01

Spring項目Java

2020-11-05 11:14:29

Docker底層原理

2011-04-15 09:49:33

NAT

2010-07-21 10:39:40

2009-07-14 13:14:13

2009-07-17 10:32:45

iBATIS MapB

2011-04-15 09:33:24

NAT

2023-05-30 14:56:18

Docker開發(fā)容器

2009-07-17 10:59:59

iBATIS接口

2011-05-13 09:29:46

路由路由器

2009-07-15 13:08:25

MyEclipse C

2009-07-16 13:08:09

iBATIS快速創(chuàng)建應

2010-04-19 17:46:45

無線應用開發(fā)系統(tǒng)

2015-07-15 11:31:49

Docker云服務鏡像構建

2010-02-06 17:39:52

C++ strtok
點贊
收藏

51CTO技術棧公眾號