边缘化搭建DotNet Core 2.1 自动化构建和部署环境(上)
寫在前面
寫這篇文章的緣由是由于筆者的對新興技術方向有所追求,但個人資產有限,只能容許購買一臺阿里云低配1核2G服務器。服務器上搭建了?Centos7 & Docker & Jenkins & ASP.NET Core 2.0 自動化發布和部署?環境后犧牲了大部分性能。造成了一個基于angular編寫的前端應用無法自動構建,構建時一直出錯,通過錯誤信息各種搜索并無任何結果。經過反反復復的的試驗,用一臺1核1G的Debain虛擬機去手動構建并成功,最后經過排查,確定是因為基于Java運行時的Jenkins對內存造成了一個巨大的占用。無奈之舉,因為窮,導致不能升級服務器,但又想享受自動構建帶來的快感,只好另辟蹊徑,將Jenkins這個自動化構建和部署服務進行邊緣化,以便去享受自動化構建和部署帶來的快感。本文章考慮篇幅問題分為上下兩篇。
先決條件
一塊根據教程安裝Debain系統的樹莓派2B+ (低于2B+型號的樹莓派性能沒經過試驗,讀者可以嘗試)
樹莓派安裝Docker CE
本文已根據教程安裝Debain系統,接下來安裝的Docker的操作過程都是基于Debain系統,若讀者的樹莓派安裝的是其他版本的系統,可另閱讀Docker官方提供的安裝操作說明,本文就不提供其他系統版本的操作步驟了。
設置Docker源倉庫
1.更新?apt?包索引:
$ sudo apt-get update2.安裝包
3.添加Docker的官方GPG密鑰:
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -$ sudo apt-key fingerprint 0EBFCD884.設置穩定的Docker源倉庫
$ echo "deb [arch=armhf] https://download.docker.com/linux/debian \$(lsb_release -cs) stable" | \sudo tee /etc/apt/sources.list.d/docker.list安裝Docker CE
1.更新?apt?包索引:
$ sudo apt-get update2.安裝最新版本的Docker CE
$ sudo apt-get install docker-ce3.運行Hello World 測試
$ sudo docker run armhf/hello-world構建鏡像
因為樹莓派本身的CPU架構是ARM,博客園存在大量基于docker搭建Jenkins環境的教程,所依賴官方的鏡像都是基于x86架構的CPU構建的,所以我們需要重新根據ARM架構的CPU去構建一個可以運行的Jenkins鏡像。并通過通過二次自定義構建的方式,修改鏡像本身的配置信息。
Jenkins官方在Docker Hub上面的鏡像是沒有ARM版本的,如果直接使用官方在Dokcer Hub上的鏡像直接自定義構建會出現錯誤。筆者在GitHub上找到一個Jenkins for Docker on Raspberry Pi的項目,里面包含構建Jenkins的Dockerfile。經過筆者的反復驗證,排除網路環境,設備原因,確信這個項目的Dockerfile是存在問題的。筆者到這里曾經想過放棄,但是既然都這么窮,又沒有錢買新的云服務,只好繼續硬著頭皮往下研究出現錯誤的原因。最后經過不斷的試驗,成功解決了這個問題,隨后筆者Fork這個項目修復問題并提交到GitHub。如果真正嘗試構建ARM版本失敗的讀者,看了這篇文章之后,就少走彎路了。項目GitHub地址:https://github.com/Loongle/rpi-jenkins。
構建Jenkins ARM鏡像
1.克隆GitHub項目:
$ git clone https://github.com/Loongle/rpi-jenkins2.進入項目并開始構建:
$ cd rpi-jenkins $ sudo docker build . -t jenkins3.讀者可以忽略此步驟,直接到構建自定義鏡像的操作。
構建自定義鏡像
單純的直接構建Jenkins并不能符合本文的主題,現在我們需要通過自定義Dockerfile來擴充我們原本的Jenkins環境設置。當然,如果直接修改筆者GitHub項目里的Dockerfile進行構建,那么這一步也是可以忽略的。見仁見智,看讀者喜歡怎么方便怎么來,喜歡怎么折騰就怎么折騰,此處構建沒有固定的操作方式,只要能確保樹莓派能運行Jenkins就Ok啦。
1.新建Dockerfile:
$ cd ~$ sudo nano Dockerfile2.查看docker組id:
cat /etc/group3.在Dockerfile插入如下代碼后,執行保存:
4.自定義Dockerfile執行構建:
$ sudo docker build . -t auto-jenkins5.等待構建完成后,啟動 Jenkins 即可:
$ sudo docker run --name=jenkins --restart=always --add-host master:192.168.6.200 -p 8080:8080 -p 50000:50000 -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/bin/docker -v /var/jenkins_home:/usr/local/jenkins/ -d auto-jenkins?寫在后面
至此,我們已經成功在樹莓派上運行 Jenkins ,筆者將在下一篇中講述從樹莓派上的Jenkins構建項目并發布到云服務器上的Docker環境中。希望正在屏幕上閱讀本文的你,能順利在樹莓派上運行你的Jenkins 環境。構建途中出現任何疑問,歡迎在評論區中留言。?
參考文獻
https://docs.docker.com/install/linux/docker-ce/debian/
https://github.com/Loongle/rpi-jenkins
原文地址:https://www.cnblogs.com/LongJiangXie/p/9964925.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結
以上是生活随笔為你收集整理的边缘化搭建DotNet Core 2.1 自动化构建和部署环境(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 边缘化搭建 DotNet Core 2.
- 下一篇: .NET Core实战项目之CMS 第六