Jenkins整合Docker自動化部署的實現(xiàn)
1. Docker 安裝 Jenkins
1.1 拉取鏡像文件
docker pull jenkins/jenkins
1.2 創(chuàng)建掛載文件目錄
mkdir -p $HOME/jenkins_home
1.3 啟動容器
docker run -d -p 8080:8080 -v $HOME/jenkins_home:/var/jenkins_home --name jenkins jenkins/jenkins
1.4 進入容器查看初始密碼
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
1.5 登錄控制臺完成初始化
選擇安裝推薦的插件
2. 配置自動化部署
2.1 配置項目文件
2.1.1 創(chuàng)建DockerFile文件
文件位置與Java文件目錄位置平級:
${WORKSPACE}/src/main/java ${WORKSPACE}/src/main/docker/DockerFile
# 該鏡像需要依賴的基礎(chǔ)鏡像 FROM openjdk:8 ARG JAR_FILE # 復制打包完成后的jar文件到/opt目錄下 COPY ${JAR_FILE} /project-name.jar # 運行過程中創(chuàng)建一個project-name.jar文件 RUN bash -c 'touch /project-name.jar' # 聲明服務(wù)運行在端口 EXPOSE 8801 ENV JAVA_OPTS="-Xms512m -Xmx2048m" ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /project-name.jar" ] # 指定維護者的名字 MAINTAINER name
2.1.2 添加pom文件插件
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> <configuration> <includeSystemScope>true</includeSystemScope> </configuration> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <executions> <execution> <id>build-image</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <!--生產(chǎn)的鏡像名稱和版本--> <imageName>project-category/${project.artifactId}:${project.version}</imageName> <dockerHost>http://${dockerHost}:2375</dockerHost> <forceTags>true</forceTags> <!--dockerfile的位置--> <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory> <!--jar名稱配置,用在dockerfile中,需要自己寫的可不用此配置--> <buildArgs> <JAR_FILE>${project.build.finalName}.jar</JAR_FILE> </buildArgs> <!--jar源位置--> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> <dependencies> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency> </dependencies> </plugin> </plugins> <!--build節(jié)點增加內(nèi)容--> <resources> <resource> <directory>src/main/resources</directory> <!--開啟過濾,用指定的參數(shù)替換directory下的文件中的參數(shù)--> <filtering>true</filtering> </resource> </resources> </build>
2.2 配置Jenkins
2.2.1 創(chuàng)建項目部署腳本
2.2.2 選擇構(gòu)建自由風格項目
2.2.3 General - 丟棄舊的構(gòu)建歷史,節(jié)省磁盤空間
2.2.4 源碼管理 - 配置Git代碼地址
1,配置Git地址(SSH)
2,配置賬號密碼
3,配置代碼分支
2.2.5 源碼管理 - 高級克隆行為
2.2.6 Build Steps - 調(diào)用頂層 Maven 目標
2.2.6.1 編譯依賴項目
如果當前項目依賴了本地其他項目,則需要先打包依賴項目,沒有則跳過此步驟
目標:clean install -pl rely-project-name -am
POM:${WORKSPACE}/rely-project-name/pom.xml
注:依賴項目的pom文件位置
2.2.6.2 打包部署項目
前提:此步驟需要目標服務(wù)器上的Docker進行過
新增用戶組
操作和開發(fā)2375端口
操作目標: clean package -Pdev -DdockerHost=ip docker:build
注:-P 代表走不同的配置環(huán)境(非必須)
POM:${WORKSPACE}/project-name/pom.xml
注:打包項目的pom文件位置
2.2.7 Build Steps - Execute shell script on remote host using ssh
在目標部署服務(wù)器上將代碼打包成鏡像,并啟動為容器
1,配置SSH賬號密碼
2,Docker啟動容器命令
-p 端口設(shè)置需要與DockerFile文件設(shè)置一致
-d 鏡像名稱需要與本地項目pom文件中配置的一致
docker stop project-center echo '----stop container----' docker rm project-center echo 'rm cont' docker rmi `docker images | grep none | awk '{print $3}'` echo '----rm none images----' docker run -it --network=host -p 8801:8801 --name project-center -d project-category/project-name:1.0-SNAPSHOT echo '----start container----' docker cp -L /usr/share/zoneinfo/Asia/Shanghai project-center:/etc/localtime docker cp -L /usr/share/zoneinfo/Asia/Shanghai project-center:/etc/timezone docker restart project-center
到此這篇關(guān)于Jenkins整合Docker自動化部署的實現(xiàn)的文章就介紹到這了,更多相關(guān)Jenkins Docker自動化部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker向數(shù)據(jù)卷Volume寫入數(shù)據(jù)
這篇文章介紹了Docker向數(shù)據(jù)卷Volume寫入數(shù)據(jù)的方法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-03-03Docker搭建并啟動Logstash的實現(xiàn)方式
這篇文章主要介紹了Docker搭建并啟動Logstash的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08CentOS系統(tǒng)下docker的安裝配置及使用介紹
這篇文章主要介紹了CentOS系統(tǒng)下docker的安裝配置及使用詳細介紹,需要的朋友可以參考下2016-10-10Docker Overlay2磁盤空間占用過大清理的方法實現(xiàn)
隨著業(yè)務(wù)量的不斷增大,容器的不斷啟動,往往會出現(xiàn)磁盤空間不足,本文主要介紹了Docker Overlay2磁盤空間占用過大清理的方法實現(xiàn),感興趣的可以了解一下2022-03-03