springboot+docker(maven)

第三十八章 springboot+docker(maven)html

回顧上一章的整個部署過程:java

  • 使用"mvn install"進行打包jar
  • 將jar移動到與Dockerfile文件相同的文件夾下
  • 編寫Dockerfile文件
  • 使用"docker build -t="zjg/myservice1docker:v1.1" /Users/enniu1/Desktop/docker-data/file"命令進行打包
    • 須要手動指定生成的images的name和tag,以及dockerfile所在的文件夾
  • 以後啓動鏡像

本章使用docker-maven-plugin實現。spring

 

1、Dockerfile:與上一章徹底相同docker

  • 放在了一個單獨的文件夾下src/main/docker/

2、pom.xml瀏覽器

引入docker-maven-plugin插件springboot

複製代碼

1             <plugin>
 2                 <groupId>com.spotify</groupId>
 3                 <artifactId>docker-maven-plugin</artifactId>
 4                 <version>0.4.13</version>
 5                 <configuration>
 6                     <!-- ${project.artifactId}:即artifactId,myservice1-docker ${project.version}:即version,1.0-SNAPSHOT -->
 7                     <imageName>${project.artifactId}:${project.version}</imageName><!-- 鏡像名稱 -->
 8                     <dockerDirectory>${basedir}/src/main/docker</dockerDirectory><!-- Dockerfile文件地址 -->
 9                     <resources>
10                         <resource>
11                             <!-- <targetPath>/</targetPath> -->
12                             <!-- ${project.build.directory},項目構建輸出目錄,默認爲target/ -->
13                             <directory>${project.build.directory}</directory>
14                             <!-- ${project.build.directory},打包出來的jar名稱,默認爲${project.artifactId}-${project.version} -->
15                             <include>${project.build.finalName}.jar</include>
16                         </resource>
17                     </resources>
18                 </configuration>
19             </plugin>

複製代碼

執行下邊的命令後,maven

  • 將dockerDirectory目錄下的內容(這裏只有Dockerfile)拷貝到項目的/target/docker/文件夾下(這裏就是/target/docker/Dockerfile)
  • 將resource中的include下的文件(這裏就是${project.build.finalName}.jar)拷貝到/target/docker/文件夾下(這裏就是/target/docker/myservice1-docker-1.0-SNAPSHOT.jar)
    • 通過上述兩個拷貝,將jar與Dockerfile拷貝到同一個文件夾下了
  • 以後進行構建過程

3、運行spring-boot

mvn clean package docker:build

關鍵日誌:ui

複製代碼

1 [INFO] --- maven-jar-plugin:2.5:jar (default-jar) @ myservice1-docker ---
 2 [INFO] Building jar: /Users/enniu1/Desktop/project/myservice1-docker/target/myservice1-docker-1.0-SNAPSHOT.jar
 3 [INFO] 
 4 [INFO] --- spring-boot-maven-plugin:1.3.0.RELEASE:repackage (default) @ myservice1-docker ---
 5 [INFO] 
 6 [INFO] --- docker-maven-plugin:0.4.13:build (default-cli) @ myservice1-docker ---
 7 [INFO] Copying /Users/enniu1/Desktop/project/myservice1-docker/target/myservice1-docker-1.0-SNAPSHOT.jar -> /Users/enniu1/Desktop/project/myservice1-docker/target/docker/myservice1-docker-1.0-SNAPSHOT.jar
 8 [INFO] Copying /Users/enniu1/Desktop/project/myservice1-docker/src/main/docker/Dockerfile -> /Users/enniu1/Desktop/project/myservice1-docker/target/docker/Dockerfile
 9 [INFO] Building image myservice1-docker:1.0-SNAPSHOT
10 Step 1 : FROM zhaojigang/jdk8:c7_j8
11  ---> e7b4cf41e531
12 Step 2 : ADD myservice1-docker-1.0-SNAPSHOT.jar /opt/jar/
13  ---> 771c895968f6
14 Removing intermediate container 12392489f5a4
15 Step 3 : ENV JAVA_HOME /opt/jdk
16  ---> Running in a81ffe207dfa
17  ---> 7aded06bc5be
18 Removing intermediate container a81ffe207dfa
19 Step 4 : ENV PATH $PATH:$JAVA_HOME/bin
20  ---> Running in b2598b5eee7c
21  ---> 5c282af98ab3
22 Removing intermediate container b2598b5eee7c
23 Step 5 : CMD java -jar /opt/jar/myservice1-docker-1.0-SNAPSHOT.jar
24  ---> Running in 51881dd70cd2
25  ---> 5e86ecc155d8
26 Removing intermediate container 51881dd70cd2
27 Successfully built 5e86ecc155d8

複製代碼

說明:插件

  • maven-jar-plugin進行package
  • spring-boot-maven-plugin進行repackage
  • 將jar和Dockerfile拷貝到同一個目錄(target/docker/)
  • 執行Dockerfile進行build

4、查看鏡像

  • docker images
1 REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
2 myservice1-docker      1.0-SNAPSHOT        5e86ecc155d8        21 seconds ago      575.8 MB

5、啓動鏡像

  • docker run -d -p 8014:8080 5e86ecc155d8

瀏覽器訪問:localhost:8014/health

 

注意:

  • 屢次指定build去構建的話,以前構建出來的REPOSITORY和TAG都會變爲<none>
1 REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
2 myservice1-docker      1.0-SNAPSHOT        5e86ecc155d8        21 seconds ago      575.8 MB
3 <none>                 <none>              f0f5b0df8ecf        4 minutes ago       575.8 MB
  • 使用docker-maven-plugin構建項目,能夠避免手工移動jar,而且能夠很方便的本身作成archetype
相關文章
相關標籤/搜索