国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

五.docker+jenkins自動部署項目

這篇具有很好參考價值的文章主要介紹了五.docker+jenkins自動部署項目。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一.敏捷開發(fā)相關(guān)概念

1.微服務(wù)的痛點

再來看一下我們的微服務(wù)架構(gòu) , 每個組件都需要服務(wù)器去部署,加起來可能需要幾十個甚至上百個服務(wù)器。docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維這樣的微服務(wù)項目在部署上會遇到什么問題?

  • 需要很多很多的服務(wù)器,服務(wù)器的采購安裝,布線都很麻煩
  • 每個服務(wù)都需要:編譯,構(gòu)建,打包,測試,發(fā)布,運維重復(fù)的工作量重復(fù)做
  • 操作麻煩(編譯,打包,測試,發(fā)布,上線等等都很麻煩)
2.什么是DevOps

問題:軟件的迭代過程包括,設(shè)計,編碼,編譯,構(gòu)建,測試,發(fā)布,運維等等流程,早期的軟件開發(fā)模式為瀑布式開發(fā),這種開發(fā)模式迭代更新太慢,每個環(huán)境都需要耗費大量人力和時間成本。往往很長時間才迭代一次。如今企業(yè)追求的都是敏捷開發(fā):快速開發(fā)快速迭代,盡可能的縮短軟件的開發(fā)生命周期。
DevOps 強調(diào)的是高效組織團隊之間如何通過自動化的工具協(xié)作和溝通來完成軟件的生命周期管理,從而更快、更頻繁地交付更穩(wěn)定的軟件。
DevOps是一種方法或理念,它涵蓋開發(fā)、測試、運維的整個過程。DevOps是提高軟件開發(fā)、測試、運維、運營 等各部門的溝通與協(xié)作質(zhì)量的方法和過程,DevOps強調(diào)軟件開發(fā)人員與軟件測試、軟件運維、質(zhì)量保障(QA)部 門之間有效的溝通與協(xié)作,強調(diào)通過自動化的方法去管理軟件變更、軟件集成,使軟件從構(gòu)建到測試、發(fā)布更加快 捷、可靠,最終按時交付軟件。

DevOps是一套項目從開發(fā)到運維的解決方案,而不是具體的一個技術(shù),DevOps需要整合一些列的技術(shù)來實現(xiàn),比如:通過Git拉取代碼,通過Mavn的命令進(jìn)行項目的清理,編譯,打包,測試等,通過Docker命令進(jìn)行鏡像構(gòu)建…。
DevOps使用到的技術(shù)如:GitHub、Git/SVN、Docker、Jenkins、 Hudson、Ant/Maven/Gradle(編譯,打包)、Selenium(自動化測試)、QUnit、JMeter(性能測試)等
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維
下面普及2個概念

  • CI : Continuous Intergration : 持續(xù)集成 ,持續(xù)交付的核心意義:盡快的將最終的產(chǎn)品發(fā)布到線上環(huán)境,給用戶使用。持續(xù)交付是每個企業(yè)追求的目標(biāo),我們常說的CI/CD里的CD一般指的就是持續(xù)交付
  • CD:Continuous Deployment :持續(xù)部署就是在持續(xù)交付的基礎(chǔ)上,將編譯、測試、打包部署到生產(chǎn)環(huán)境的過程做成自動化。
3.什么是敏捷開發(fā)

傳統(tǒng)的瀑布式開發(fā)模型要求一個項目版本的所有功能都開發(fā)完成才會進(jìn)行版本地迭代,這種開發(fā)模式不僅項目版本迭代速度慢,沒法盡早的發(fā)現(xiàn)軟件的質(zhì)量問題,和持續(xù)的項目交付。
而敏捷開發(fā)最重要的目標(biāo)是通過及早和持續(xù)不斷地交付有價值的軟件使客戶滿意;要達(dá)到這一目的就需要更高頻率的版本迭代,包括:編譯,打包,測試,運維。且應(yīng)該自動化的完成,才有可能達(dá)到更快的軟件開發(fā)生命周期。
敏捷與 DevOps 之間的主要區(qū)別在于:敏捷是關(guān)于如何開發(fā)和交付軟件的哲學(xué),而 DevOps 則描述了如何通過使用現(xiàn)代工具和自動化流程來持續(xù)部署代碼。

4.什么是云原生

云原生的定義最早也是由 Pivotal 公司的 Matt Stine 于 2013 年提出的,云原生是基于分布部署和統(tǒng)一運管的分布式云 [1] ,以容器、微服務(wù)、DevOps等技術(shù)為基礎(chǔ)建立的一套云技術(shù)產(chǎn)品體系。 它具有:**DevOps、持續(xù)交付、微服務(wù)、容器、**等特點 。
云原生技術(shù)有利于各組織在公有云、私有云和混合云等新型動態(tài)環(huán)境中構(gòu)建和運行可彈性擴展的應(yīng)用。云原生的代表技術(shù)包括容器、服務(wù)網(wǎng)格、微服務(wù)、不可變基礎(chǔ)設(shè)施和聲明式 API。這些技術(shù)能夠構(gòu)建容錯性好、易于管理和便于觀察的松耦合系統(tǒng)。結(jié)合可靠的自動化手段,云原生技術(shù)使工程師能夠輕松地對系統(tǒng)做出頻繁和可預(yù)測的重大變更。

5.什么是jenkins

Jenkins是一個開源的、可擴展的持續(xù)集成、交付、部署(軟件/代碼的編譯、打包、部署)的基于web界面的平臺。
起源于Hudson(Hudson是商用的),主要用于持續(xù)、自動的構(gòu)建/測試軟件項目、監(jiān)控外部任務(wù)的運行(這個比較抽象,暫且寫上,不做解釋)。
允許持續(xù)集成和持續(xù)交付項目,無論用的是什么平臺,可以處理任何類型的構(gòu)建或持續(xù)集成。
它可以在代碼上傳倉庫(如github,gitee,gitlab)后,在jenkins(一個網(wǎng)站界面)中通過獲取代碼倉庫中最新代碼,進(jìn)行自動化部署,而省去手動打包、上傳服務(wù)器、部署這一系列步驟,非常方便。

Jenkins的特性

  • 開源的java語言開發(fā)持續(xù)集成工具,支持CI,CD;
  • 易于安裝部署配置:可通過yum安裝,或下載war包以及通過docker容器等快速實現(xiàn)安裝部署,可方便web界面配置管理;
  • 消息通知及測試報告:集成RSS/E-mail通過RSS發(fā)布構(gòu)建結(jié)果或當(dāng)構(gòu)建完成時通過e-mail通知,生成JUnit/TestNG測試報告;
  • 分布式構(gòu)建:支持Jenkins能夠讓多臺計算機一起構(gòu)建/測試;
  • 文件識別:Jenkins能夠跟蹤哪次構(gòu)建生成哪些jar,哪次構(gòu)建使用哪個版本的jar等;
  • 豐富的插件支持:支持?jǐn)U展插件,你可以開發(fā)適合自己團隊使用的工具,如git,svn,maven,docker等。

二.Jenkins安裝

1.方案設(shè)計

現(xiàn)在我們已經(jīng)有docker的環(huán)境了,可以用來部署項目,現(xiàn)在我們只需要使用Jenkins實現(xiàn)一鍵部署即可,整體方案如下
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維

  • 在和安裝了docker的服務(wù)器上安裝好jenkins
  • 程序員把代碼提交到遠(yuǎn)程 git 倉庫,jenkins可以自動從git倉庫拉取代碼到本地
  • jenkins安裝好maven和jdk,然后執(zhí)行 package 對代碼進(jìn)行打包如:app.jar
  • jenkins執(zhí)行事先準(zhǔn)備好的Dockerfile腳本構(gòu)建docker鏡像
  • jenkins執(zhí)行shell腳本,根據(jù)鏡像啟動容器

上面的問題是安裝docker和安裝jenkins的服務(wù)器是同一個服務(wù)器,或者這樣:
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維

  • 在服務(wù)器上安裝好jenkins
  • 程序員把代碼提交到遠(yuǎn)程 git 倉庫,jenkins可以自動從git倉庫拉取代碼到本地
  • jenkins安裝好maven和jdk,然后執(zhí)行 package 對代碼進(jìn)行打包如:app.jar
  • jenkins執(zhí)行事先準(zhǔn)備好的Dockerfile腳本構(gòu)建docker鏡像
  • jenkins把docker鏡像推送到鏡像倉庫
  • 安裝了k8s的服務(wù)器,從docker鏡像倉庫中拉取鏡像然后啟動容器
2.安裝jenkins

準(zhǔn)備jenkins映射的目錄

#創(chuàng)建jenkins文件映射目錄
mkdir /var/jenkins_home

#給目錄設(shè)置權(quán)限
chmod 777 /var/jenkins_home   

執(zhí)行下面命令啟動jenkins容器

docker run --privileged -d --name jenkins -p 9999:8080 -p 8888:8888 -p 50000:50000 \
-v /var/jenkins_home:/var/jenkins_home  \
-v /var/run/docker.sock:/var/run/docker.sock  \
-v $(which docker):/bin/docker jenkins/jenkins:latest-jdk17
  • -d : 后臺運行
  • -p 8088:8080 : 將容器的8080端口映射到宿主的8088端口
  • -v /var/jenkins_home:/var/jenkins_home : 將容器中/var/jenkins_home的目錄掛載到宿主的/mnt/jenkins_home
  • -v $(which docker):/bin/docker : 將宿主的docker目錄映射到容器內(nèi),以便在容器中能使用docker對應(yīng)的命令完成自動化部署

上面的操作已經(jīng)將docker相互映射,但在jenkins容器中直接執(zhí)行docker的命令時,可能會報權(quán)限不足。這個問題是容器中的docker是通過docker.sock的方式與宿主的docker通信的,其對應(yīng)的可執(zhí)行用戶為root。此時我們可以將 /var/run/docker.sock 的權(quán)限放開來解決此問題

chmod 777 /var/run/docker.sock

然后在linux機器的 /usr/local/src/jdk 目錄安裝好JDK, 以及在 /usr/local/src/maven 目錄安裝好maven 請注意版本

3.jenkins初始化

更改jenkins插件下載地址,因為默認(rèn)是去國外網(wǎng)站下載插件比較慢,而且容易下載失敗,我們修改插件下載地址為國內(nèi)地址

cd /var/jenkins_home

vi hudson.model.UpdateCenter.xml

修改地址為下面的地址

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

然后重啟jenkins : docker restart jenkins

瀏覽器訪問:http://服務(wù)IP:9999/ ,進(jìn)入jenkins初始化頁面
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維
可以通過:docker logs jenkins 來查看密碼 ,輸入密碼后,選擇:安裝推薦的插件

docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維

耐心等待安裝完成進(jìn)入下面界面,你可以創(chuàng)建一個新的管理員,或者使用admin賬戶繼續(xù)
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維
后面就一直下一步就可以了,安裝完成后界面如下

4.安裝插件

根據(jù)推薦安裝好插件后,還需安裝一個maven 插件,登錄jenkins,找到插件管理
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維
然后在可用插件一欄中,搜索:Maven Integration 插件進(jìn)行安裝
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維

5.全局工具配置

接下來我們對maven做配置,找到 manager jenkins - tools
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維
進(jìn)去后,找到最下邊的maven ,選擇自動安裝,如下
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維
注意:如果采用jenkins自動安裝方式可能會安裝不上,我們可以自己解壓一個maven到 -v 的目錄中,然后設(shè)置好權(quán)限,比如:我上傳了一個maven到linux中,然后他會自動同步到容器中去docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維
然后設(shè)置權(quán)限

chmod -R 777 /var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/apache-maven-3.9.4

然后在全局工具設(shè)置出不要使用自動安裝,而是指向上傳的maven home.
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維
然后保存退出即可

三.構(gòu)建項目

1.項目導(dǎo)入插件

給要部署的項目安裝好打包插件,并指定項目的名字如:

  • 打包后項目名為: app.jar
<build>
    <finalName>app</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <!--docker的maven插件,官網(wǎng): https://github.com/spotify/docker‐maven‐plugin-->
    </plugins>
</build>

同時在項目根目錄準(zhǔn)備一個Dockerfile文件,內(nèi)容如下

  • 大概的意思是就是基于Dockerfile把項目打包成docker鏡像,并隨著容器啟動自動啟動項目
FROM meddream/jdk17:latest
VOLUME /tmp
ADD ./target/app.jar /app.jar
ENV TZ=Asia/Shanghai
EXPOSE 10010
#CMD java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar app.jar
ENTRYPOINT ["java", "-jar ", "/app.jar","--spring.profiles.active=prod"]
2.代碼推送到遠(yuǎn)程

然后需要準(zhǔn)備一個遠(yuǎn)程Git倉庫,企業(yè)內(nèi)部可能會選擇搭建自己的Git私服,我這里就直接使用Gitee,把代碼提送上去,如:
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維

3.構(gòu)建項目

回到j(luò)enkins的最外層 - 點擊 新建 item
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維
選擇構(gòu)建一個自由軟件 - 指定構(gòu)建的項目名 ,拉后確定
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維
進(jìn)去之后,找到 源碼管理 - 指定你的代碼倉庫地址 ,以及添加賬號
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維
填好之后往下滾動,找到構(gòu)建環(huán)境 - 選擇調(diào)用頂層Maven目標(biāo)
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維
然后指定maven版本和目標(biāo): clean install -Dmaven.test.skip=true 該命令是對項目進(jìn)行打包
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維
點擊保存退出,然后點擊立即構(gòu)建 - 查看構(gòu)建日志
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維
日志如下 - jenkins從嘗試安裝maven,然后從git下載代碼后,進(jìn)行 : clean install -Dmaven.test.skip=true 命令執(zhí)行
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維

4.啟動項目容器

啟動項目的原理是通過Dockerfile構(gòu)建項目鏡像,并自動啟動容器 ,因為我們項目和jenkins在同一臺服務(wù)器,所以我們用shell腳本運行項目,原理既是通過dockerfile 打包鏡像,然后docker運行即可。接下來我們,修改jenkins任務(wù)配置 -
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維
shell腳本如下:

  • 注意: 這個 install 目錄和構(gòu)建jenins項目時取的名字保持一樣
cd /var/jenkins_home/workspace/gateway/it-drive-service-gateway
docker stop drive-gateway || true
docker rm drive-gateway || true
docker rmi drive-gateway || true
docker build -t drive-gateway .
docker run -id -p 10010:10010 --name drive-gateway drive-gateway:latest

解釋:

  1. /var/jenkins_home/workspace/gateway/it-drive-service-gateway :是jenkins拉取的代碼目錄
  2. 當(dāng)執(zhí)行jenins項目構(gòu)建,jenkins會執(zhí)行install把我們的代碼打包為jar
  3. 然后執(zhí)行上面腳本,腳本通過docker file 來構(gòu)建鏡像并啟動容器

docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維
然后執(zhí)行構(gòu)建,效果如下
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維
然后回到docker,執(zhí)行:docker ps 查看容器

為了方便理解,下面整理了一個流程圖
docker容器使用jenkins部署web項目,《一起來部署項目》,jenkins,運維文章來源地址http://www.zghlxwxcb.cn/news/detail-771868.html

  1. 程序員吧IDEA的代碼推送到GIT遠(yuǎn)程倉庫
  2. Jenkins通過Git客戶端從Git倉庫中拉取最新的代碼
  3. Jenkins執(zhí)行maven命令打包項目:clean install
  4. Jenkins執(zhí)行腳本,cd到代碼目錄,執(zhí)行docker build,根據(jù)Dockerfile 構(gòu)建鏡像
  5. 執(zhí)行腳本 docker run 啟動容器

到了這里,關(guān)于五.docker+jenkins自動部署項目的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • docker+jenkins自動化部署springboot項目

    docker+jenkins自動化部署springboot項目

    阿里云服務(wù)器1核2GB java 1.8.0._371 maven apache-maven3.8.8 git 1.8.3.1 docker和jenkins在一臺服務(wù)器上,環(huán)境的配置,對于java和maven可以自己下載對應(yīng)tar包進(jìn)行配置,記得配置環(huán)境,也可以使用yum進(jìn)行安裝。記得配置/etc/profile后source一下: source /etc/profile Maven記得修改鏡像?。。?在本地創(chuàng)建

    2024年02月03日
    瀏覽(33)
  • Docker + Jenkins 自動化部署若依項目

    Docker + Jenkins 自動化部署若依項目

    前言 對著此文章操作之前,確保服務(wù)器上的Java環(huán)境(JDK、MySQL、Redis、Jenkins以及Linux安裝Maven)已經(jīng)裝好,如果沒有裝好,參考我之前的文章。 注意: 如果服務(wù)器上自己裝的又 Nginx ,需要手動停了,要不會導(dǎo)致80端口被占用 1:首先,到若依官網(wǎng)拉去若依分離版項目 2:拉完之后

    2024年04月16日
    瀏覽(39)
  • Docker+Jenkins+Gitee自動化部署maven項目

    Docker+Jenkins+Gitee自動化部署maven項目

    各位看官老爺,本文為Jenkins實戰(zhàn),注重實際過程,閱讀完會有以下收獲: 了解如何使用Docker安裝Jenkins 了解如何使用Jenkins部署maven項目 了解如何使用Jenkins+Gitee實現(xiàn)自動化部署 相信,正在讀這篇文章的你,對Jenkins應(yīng)該有或多或少的了解,就算沒有也應(yīng)該在某個地方聽說過。??

    2024年02月07日
    瀏覽(30)
  • jenkins+docker實現(xiàn)可持續(xù)自動化部署springboot項目

    目錄 一、前言 二、微服務(wù)帶來的挑戰(zhàn) 2.1 微服務(wù)有哪些問題

    2024年04月15日
    瀏覽(42)
  • Jenkins+Docker 實現(xiàn)一鍵自動化部署項目!步驟齊全,少走坑路

    Jenkins+Docker 實現(xiàn)一鍵自動化部署項目!步驟齊全,少走坑路

    大家好,我是互聯(lián)網(wǎng)架構(gòu)師! 本文章實現(xiàn)最簡單全面的Jenkins+docker+springboot 一鍵自動部署項目,步驟齊全,少走坑路。 環(huán)境 :centos7+git(gitee) 簡述實現(xiàn)步驟:在docker安裝jenkins,配置jenkins基本信息,利用Dockerfile和shell腳本實現(xiàn)項目自動拉取打包并運行。 docker 安裝社區(qū)版本CE

    2024年02月09日
    瀏覽(25)
  • docker部署jenkins且jenkins中使用docker去部署項目

    docker部署jenkins且jenkins中使用docker去部署項目

    2.346.1是最后一個支持jdk8的 在這個目錄中新增data文件夾,注意data是用來跟docker中的文件進(jìn)行映射的 docker-compose.yml docker-compose up -d 安裝插件,如果插件失敗,在這里面去修改 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json jdk地址: https://repo.huaweicloud.com/java/jdk/8u202-b

    2024年02月13日
    瀏覽(56)
  • 使用Jenkins自動部署vue項目

    使用Jenkins自動部署vue項目

    1、Jenkins簡介 Jenkins是開源CICD軟件領(lǐng)導(dǎo)者, 提供超過1000個插件來支持構(gòu)建、部署、自動化, 滿足任何項目的需要。 2、Jenkins安裝 這里是使用docker-compose安裝Jenkins,所以需要先安裝docker和docker-compose 2.1、docker安裝 2.2、docker-compose安裝 2.3、Jenkins安裝 創(chuàng)建docker-compose.yaml文件 創(chuàng)

    2024年02月06日
    瀏覽(20)
  • Gitee+Jenkins(docker版)自動推送并部署Springboot項目到遠(yuǎn)程服務(wù)器

    Gitee+Jenkins(docker版)自動推送并部署Springboot項目到遠(yuǎn)程服務(wù)器

    如果要參考gitlab配置請參考Gitlab+Webhook自動推送并更新Springboot項目 Gitlab的配置部分 Jenkins服務(wù)器(Centos7.6): docker安裝的jenkins,參考Jenkins(docker安裝)部署Springboot項目 JDK1.8 Maven3.6.3 注意docker安裝的jenkins,而且是較新的版本,所以jenkins容器內(nèi)的java版本是11的,而我的項目是基于JDK1.8的

    2024年02月13日
    瀏覽(49)
  • Jenkins + Docker 一鍵自動化部署 Spring Boot 項目,步驟齊全,少走坑路!

    Jenkins + Docker 一鍵自動化部署 Spring Boot 項目,步驟齊全,少走坑路!

    本文章實現(xiàn)最簡單全面的Jenkins+docker+springboot 一鍵自動部署項目,步驟齊全,少走坑路。 環(huán)境 :centos7+git(gitee) 簡述實現(xiàn)步驟:在docker安裝jenkins,配置jenkins基本信息,利用Dockerfile和shell腳本實現(xiàn)項目自動拉取打包并運行。 推薦一個開源免費的 Spring Boot 實戰(zhàn)項目: https://git

    2024年02月08日
    瀏覽(59)
  • Docker使用Jenkins部署項目

    Docker使用Jenkins部署項目

    Docker安裝及配置移步Docker安裝及配置 目錄 1.拉取Jenkin鏡像 2.運行啟動Jenkins 3.訪問Jenkins 4.配置Jenkins 插件下載? 配置 5.配置Git倉庫拉代碼構(gòu)建 6.測試構(gòu)建 ? 可通過以下命令查看鏡像 記得在防火墻開啟對應(yīng)端口 說明: 命令???????? 作用 -d ?容器后臺運行 --name jenkins 容器名

    2024年02月11日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包