【Spring Cloud】一、 Docker 服務並結合 Jenkins 自動構建

一、 Docker 服務並結合 Jenkins 自動構建

將項目轉爲 docker

先在 Docker Hub 註冊個賬號,需要有個空間

1. maven配置

pom.xml

<properties>
    <java.version>1.8</java.version>
    <docker.image.prefix>xznh</docker.image.prefix>
</properties>



<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.10</version>
	<configuration>
        <username>******</username>
        <password>******</password>
	    <repository>${docker.image.prefix}/${project.artifactId}</repository>
	    <buildArgs>
		    <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
	    </buildArgs>
	</configuration>
</plugin>

dockerfile-maven-plugin 插件會自動讀取本機的 docker 用戶認證信息:

參考官方文檔:https://github.com/spotify/dockerfile-maven/blob/master/docs/authentication.md

因爲在 docker 中的 Jenkins 運行,故直接把賬號密碼寫進配置文件

這裏的 docker.image.prefix 是需要配置的,這裏配置的是在 docker Hub註冊的賬號名

2. Jenkins 配置

此時在 Jenkins 中配置 maven 中執行命令:

clean package dockerfile:build dockerfile:push

即可實現構建打包

不過此時 Jenkins 運行構建項目時候也需要 docker環境,故引主服務器 docker 環境進行 Jenkins 鏈接:

在運行 Docker 中 運行Jenkins 的時候,進行配置:

docker run -d -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -p 8080:8080 -p 50000:50000 -v jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins docker.io/jenkins/jenkins

此時對主環境的 /var/run/docker.sock 也需要申請 root 權限

chmod 777 /var/run/docker.sock

參考, 此時纔可以正常打包,並能發佈到 Docker Hub。

3. 遠程執行項目更新

項目打包完畢,需要通知遠端服務器來更新,此時因爲已經發布到了Docker Hub,在其他服務器只需要通知更新項目即可

Jenkins 增加插件 SSH,並在憑據里加服務器的賬號密碼,並在 系統管理 - 系統設置 - SSH remote hosts 中

填好相關信息。這裏Credentials就是剛纔加的憑據:

在項目配置中 構建 操作 中增加 Execute shell script on remote host using ssh 選項:

這裏可以寫遠程服務器執行的一些命令。

這裏的三行命令,參考

docker rm $(docker stop $(docker ps -a -q --filter="name=rarecord"))
docker pull xznh/rarecord
docker run -d  -e "SPRING_PROFILES_ACTIVE=prod" -p 7777:7777 --name rarecord xznh/rarecord -t 

分別是:1. 刪除之前的該鏡像容器 2. 拉最新的鏡像信息 3. 執行最新容器

包括項目的啓動更新,都是以這種方式來進行

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章