docker-compose集成Jenkins部署,打包,發(fā)布方式
前言
需要提前準(zhǔn)備的條件
- 1.git
- 2.Maven環(huán)境
- 3.Docker環(huán)境
- 4.JDK環(huán)境(Centos7.4自帶JDK環(huán)境去除,重裝的JDK)
- 5.Nodejs #前端發(fā)布使用
一、 jenkins部署
下載鏡像
#查詢鏡像 docker search jenkins

#下載鏡像 docker pull jenkins/jenkins

編寫docker-compose.yml
version : '3'
services:
jenkins:
user: root
restart: always
image: jenkins/jenkins
container_name: jenkins
ports:
- 8080:8080
- 50000:50000
volumes:
- /srv/jenkins/jenkins_home/:/var/jenkins_home/
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- /etc/docker/daemon.json:/etc/docker/daemon.json
- /usr/local/java/jdk1.8.0_161:/usr/local/java/jdk1.8.0_161
- /usr/local/maven/apache-maven-3.9.1:/usr/local/maven/apache-maven-3.9.1
- /usr/local/node13:/usr/local/node13
- /root/.ssh:/root/.ssh
查詢linux服務(wù)器中jdk,maven,nodejs的路徑地址,掛載到j(luò)enkins容器的指定路徑,如下圖:
寫法:-服務(wù)器路徑:容器路徑
圖片內(nèi)容說明將服務(wù)器中的jdk,maven,nodejs掛載到j(luò)enkins容器中

- /root/.ssh:/root/.ssh 為ssh生成的密鑰地址?。。?/pre>
圖中可以合并寫成
volumes:
- /srv/jenkins/jenkins_home/:/var/jenkins_home/
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- /etc/docker/daemon.json:/etc/docker/daemon.json
- /usr:/usr #將服務(wù)器usr目錄掛載到j(luò)enkins容器的usr目錄中
- /root/.ssh:/root/.ssh
啟動容器
Jenkins需要下載大量內(nèi)容,但是由于默認(rèn)下載地址下載速度較慢,如有需要可以設(shè)置下載地址為國內(nèi)鏡像站
cd /home/jenkins_home/ cat hudson.model.UpdateCenter.xml
# 修改數(shù)據(jù)卷中的hudson.model.UpdateCenter.xml文件
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>https://updates.jenkins.io/update-center.json</url>
</site>
</sites>
# 將下載地址替換為http://mirror.esuni.jp/jenkins/updates/update-center.json
<?xml version='1.1' encoding='UTF-8'?>
<sites>
<site>
<id>default</id>
<url>http://mirror.esuni.jp/jenkins/updates/update-center.json</url>
</site>
</sites>
# 清華大學(xué)的插件源也可以https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
啟動容器
#在docker-compose.yml所在目錄啟動 docker-compose up -d jenkins
訪問Jenkins
在瀏覽器中輸入:http://serverIp:port/訪問jenkins,serverIp為docker宿主機(jī)的ip,port即為宿主機(jī)映射的端口。
即:http://192.168.0.1:8080/
#日志查看 docker logs jenkins


#根據(jù)提示密碼在/var/jenkins_home/secrets/initialAdminPassword這個(gè)文件中,注意這個(gè)路徑是jenkins容器中的,所以我們通過如下命令獲取一下 docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword #如果查不到,可以通過find命令,進(jìn)行全局搜索映射到服務(wù)器的initialAdminPassword的文件 find / -name "initialAdminPassword"

安裝插件

- 設(shè)置管理員信息
- 配置jenkins路徑(默認(rèn)即可)
- 進(jìn)入首頁

至此,Jenkins部署完成!??!
二、 jenkins打包,發(fā)布配置
安裝插件

需要安裝的插件:
- 1.NodeJs
- 2.SSH Pipeline Steps
- 3.Maven Integration



全局工具配置

全局配置包含maven,jdk,nodejs,配置中的路徑為jenkins容器中的路徑:

如有報(bào)錯(cuò):

請查看docker-compose.yml中配置是否正確
或者 進(jìn)入jenkins容器
命令:java docker exec -it 容器id /bin/bash

查看配置是否掛載到容器中,確認(rèn)容器中的usr的maven,jdk,nodejs文件的路徑是否和jenkins中路徑一致
maven的settings.xml配置

JDK配置

Maven配置

NodeJS配置(發(fā)布前端使用)
如果沒有,確認(rèn)插件是否安裝

憑據(jù)配置

SSH類型
gitssh憑證配置(拉取代碼的時(shí)候使用)

SSH密鑰生成
執(zhí)行命令后,全敲回車 ssh-keygen -t rsa -C "git賬號"

查看生成的密鑰

- id.rsa:私鑰文件
- id.rsa.pub:公鑰文件????
私鑰配置到j(luò)enkins憑據(jù)中,公鑰配置到git中

賬號密碼類型
目標(biāo)服務(wù)器(需要發(fā)布代碼的服務(wù)器)的憑證配置(上傳jar包、前端文件時(shí)使用)

發(fā)布服務(wù)-后端(僅供參考)
以發(fā)布 demo 為例:
在目標(biāo)服務(wù)器上創(chuàng)建docker-compose.yml文件,dockerfile文件夾

在dockerfile中新建 demo 的文件夾

在 demo 新建Dockerfile

# 基礎(chǔ)鏡像 FROM openjdk:8-jre # author MAINTAINER zz # 掛載目錄 VOLUME /home/front # 創(chuàng)建目錄 RUN mkdir -p /home/front # 指定路徑 WORKDIR /home/front # 復(fù)制jar文件到路徑 COPY ./demo.jar /home/front # 啟動認(rèn)證服務(wù) ENTRYPOINT ["java","-jar","demo.jar"]
在jenkins中新建任務(wù)-輸入任務(wù)名稱demo,選擇流水線

流水線腳本配置


運(yùn)行項(xiàng)目

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker如何打包本地環(huán)境為tar包給別人使用
這篇文章主要介紹了Docker如何打包本地環(huán)境為tar包給別人使用問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
docker kubernetes dashboard安裝部署詳細(xì)介紹
這篇文章主要介紹了docker kubernetes dashboard安裝部署詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-10-10
Docker中安裝ElasticSearch+Kibana+Logstash(ELK)實(shí)踐記錄
文章介紹了如何使用Docker在本地安裝和配置Elasticsearch、Kibana和Logstash(ELK堆棧),本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2025-03-03
Docker+Nginx單副本零停機(jī)發(fā)布實(shí)現(xiàn)并解決文件訪問 404
本文提供了解決Docker容器文件隔離問題的方法,核心是Nginx和業(yè)務(wù)容器掛載相同的宿主機(jī)文件目錄,通過Nginx重寫規(guī)則去掉/api前綴匹配業(yè)務(wù)服務(wù)路徑,同時(shí)發(fā)布時(shí)流量同步切換到臨時(shí)副本,避免404和中斷問題2026-04-04
CentOS7 docker服務(wù)無法啟動解決方案及實(shí)現(xiàn)步驟
這篇文章主要介紹了CentOS7 docker服務(wù)無法啟動解決方案及實(shí)現(xiàn)步驟的相關(guān)資料,這里對Docker 服務(wù)無法啟動做了詳細(xì)的排查工作及流程,并附解決辦法,需要的朋友可以參考下2016-12-12
Dockerfile中 CMD和ENTRYPOINT的區(qū)別小結(jié)
本文主要介紹了Dockerfile中 CMD和ENTRYPOINT的區(qū)別小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-09-09
docker自建rustdesk-server遠(yuǎn)程桌面的解決方案
RustDesk 是一款可以平替 TeamViewer 的開源軟件,旨在提供安全便捷的自建方案,這篇文章主要介紹了docker自建rustdesk-server遠(yuǎn)程桌面的解決方案,需要的朋友可以參考下2024-07-07

