docker+Jenkins
結(jié)合Jenkins大體思路:將springboot應(yīng)用打包并發(fā)布成docker鏡像掂碱,然后再運行她我。Jenkins主要執(zhí)行的步驟是:拉取代碼--->打包--->發(fā)布鏡像---->運行鏡像
-
spring boot 應(yīng)用配置
添加下面maven插件:
dockerfile 位置根據(jù)具體情況修改3胍2蹲小抛腕!
<plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.4.13</version> <executions> <execution> <id>default</id> <goals> <goal>build</goal> <goal>push</goal> </goals> </execution> </executions> <configuration> <repository>${project.name}</repository> <tag>${project.version}</tag> <buildArgs> <JAR_FILE>${project.build.finalName}.jar</JAR_FILE> </buildArgs> <dockerfile>./Dockerfile</dockerfile> </configuration> </plugin> </plugins>
-
編寫docker file
FROM openjdk:8-jre-slim MAINTAINER xuxueli ENV PARAMS="" ENV TZ=PRC RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone COPY target/xxl-job-executor-0.0.1-SNAPSHOT.jar /app.jar ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /app.jar $PARAMS"]
只需要改變下target(打包完之后的包名)
新建Jenkins應(yīng)用项乒,并配置好git信息服赎。倉庫地址和驗證信息和分支等
- 加入maven構(gòu)建
[圖片上傳中...(image-20210312095914050.png-98c522-1615859185694-0)]
-
設(shè)置maven的setting文件【非必須】
因為默認(rèn)的setting下載會很慢葵蒂,所以需要更改setting文件
a. 進(jìn)入manage jenkins----> manage files
b. 新增config
c. 選擇mave setting.xml,并提交
d. settting 復(fù)制進(jìn)去
-
選擇剛剛設(shè)置好的maven setting.xml,打開maven的高級設(shè)置
maven 目標(biāo):
clean -U -Dmaven.skip.test=true package
image-20210312101451622.png
-
添加腳本:
docker stop xxl-job-executor docker start xxl-job-executor
- 測試腳本重虑,直接build践付,一步一個腳印,一行一行腳本調(diào)試
問題記錄:
-
docker運行提示:
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/boot/SpringApplication
原因:包沒有引入
解決方案:精簡maven插件:
-
no main manifest attribute
原因:
plugins 中是按順序執(zhí)行的缺厉,順序反了必然會出現(xiàn)問題永高。
springboot結(jié)構(gòu)不完整。需要有完整的父依賴(https://stackoverflow.com/questions/54867295/springboot-no-main-manifest-attribute-maven)
maven執(zhí)行springboot的repackge目標(biāo):mvn package spring-boot:repackage
-
或者maven添加插件:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.places.Main</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin>
-
springboot 打包運行成功要素
3 things: - You have the parent entry in your pom. - Verify that your plugin is in the build portion of the pom. - You have a class with the @SpringBootApplicaion annotation. pom.xml: ... <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.8.RELEASE</version> </parent> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> ... And a class that looks something like this: @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }