边缘化搭建DotNet Core 2.1 自动化构建和部署环境
寫在前面
? ? ? ? 寫這篇文章的緣由是由于筆者的對新興技術(shù)方向有所追求,但個人資產(chǎn)有限,只能容許購買一臺阿里云低配1核2G服務(wù)器。服務(wù)器上搭建了?Centos7 & Docker & Jenkins & ASP.NET Core 2.0 自動化發(fā)布和部署?環(huán)境后犧牲了大部分性能。造成了一個基于angular編寫的前端應(yīng)用無法自動構(gòu)建,構(gòu)建時一直出錯,通過錯誤信息各種搜索并無任何結(jié)果。經(jīng)過反反復(fù)復(fù)的的試驗,用一臺1核1G的Debain虛擬機去手動構(gòu)建并成功,最后經(jīng)過排查,確定是因為基于Java運行時的Jenkins對內(nèi)存造成了一個巨大的占用。無奈之舉,因為窮,導(dǎo)致不能升級服務(wù)器,但又想享受自動構(gòu)建帶來的快感,只好另辟蹊徑,將Jenkins這個自動化構(gòu)建和部署服務(wù)進行邊緣化,以便去享受自動化構(gòu)建和部署帶來的快感。本文章考慮篇幅問題分為上下兩篇。
先決條件
? ? ? ? 一塊根據(jù)教程安裝Debain系統(tǒng)的樹莓派2B+ (低于2B+型號的樹莓派性能沒經(jīng)過試驗,讀者可以嘗試)
樹莓派安裝Docker CE
? ? ? ??本文已根據(jù)教程安裝Debain系統(tǒng),接下來安裝的Docker的操作過程都是基于Debain系統(tǒng),若讀者的樹莓派安裝的是其他版本的系統(tǒng),可另閱讀Docker官方提供的安裝操作說明,本文就不提供其他系統(tǒng)版本的操作步驟了。
設(shè)置Docker源倉庫
? ? ? ? 1、更新?apt?包索引:
sudo apt-get update? ? ? ? 2、安裝包
sudo apt-get -y install \apt-transport-https \ca-certificates \curl \gnupg2 \software-properties-common? ? ? ?3、添加Docker的官方GPG密鑰:
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -$ sudo apt-key fingerprint 0EBFCD88? ? ? ?4、設(shè)置穩(wěn)定的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 update? ? ? ?2、安裝最新版本的Docker CE
sudo apt-get install docker-ce? ? ? ?3、運行Hello World 測試
sudo docker run armhf/hello-world構(gòu)建鏡像
? ? ? ?因為樹莓派本身的CPU架構(gòu)是ARM,博客園存在大量基于docker搭建Jenkins環(huán)境的教程,所依賴官方的鏡像都是基于x86架構(gòu)的CPU構(gòu)建的,所以我們需要重新根據(jù)ARM架構(gòu)的CPU去構(gòu)建一個可以運行的Jenkins鏡像。并通過通過二次自定義構(gòu)建的方式,修改鏡像本身的配置信息。
Jenkins官方在Docker Hub上面的鏡像是沒有ARM版本的,如果直接使用官方在Dokcer Hub上的鏡像直接自定義構(gòu)建會出現(xiàn)錯誤。筆者在GitHub上找到一個Jenkins for Docker on Raspberry Pi的項目,里面包含構(gòu)建Jenkins的Dockerfile。經(jīng)過筆者的反復(fù)驗證,排除網(wǎng)路環(huán)境,設(shè)備原因,確信這個項目的Dockerfile是存在問題的。筆者到這里曾經(jīng)想過放棄,但是既然都這么窮,又沒有錢買新的云服務(wù),只好繼續(xù)硬著頭皮往下研究出現(xiàn)錯誤的原因。最后經(jīng)過不斷的試驗,成功解決了這個問題,隨后筆者Fork這個項目修復(fù)問題并提交到GitHub。如果真正嘗試構(gòu)建ARM版本失敗的讀者,看了這篇文章之后,就少走彎路了。項目GitHub地址:https://github.com/Loongle/rpi-jenkins。
構(gòu)建Jenkins ARM鏡像
? ? ? 1、克隆GitHub項目:
git clone https://github.com/Loongle/rpi-jenkins? ? ? 2、進入項目并開始構(gòu)建:
cd rpi-jenkins sudo docker build . -t jenkins構(gòu)建自定義鏡像
? ? ? ?單純的直接構(gòu)建Jenkins并不能符合本文的主題,現(xiàn)在我們需要通過自定義Dockerfile來擴充我們原本的Jenkins環(huán)境設(shè)置。當(dāng)然,如果直接修改筆者GitHub項目里的Dockerfile進行構(gòu)建,那么這一步也是可以忽略的。見仁見智,看讀者喜歡怎么方便怎么來,喜歡怎么折騰就怎么折騰,此處構(gòu)建沒有固定的操作方式,只要能確保樹莓派能運行Jenkins就Ok啦。
? ? ? ?1、新建Dockerfile:
cd ~$ sudo nano Dockerfile? ? ? ?2、查看docker組id:
cat /etc/group? ? ? ?3、在Dockerfile插入如下代碼后,執(zhí)行保存:
FROM jenkins #可將 jenkins 替換 loongle/rpi-jenkins:latest 以解決自己構(gòu)建 Jenkins 鏡像速度慢的問題 USER rootARG dockerGid = 996 #填寫 /etc/group 下查到的 id#切換阿里云加速 RUN echo '' > /etc/apt/sources.list.d/jessie-backports.list \&& echo '' > /etc/apt/sources.list \&& echo '' > /etc/apt/raspi.list \&& echo "deb https://mirrors.aliyun.com/raspbian/raspbian/ stretch main crontrib non-free rpi" > /etc/apt/sources.list \&& echo "deb-src https://mirrors.aliyun.com/raspbian/raspbian/ stretch main crontrib non-free rpi" > /etc/apt/sources.list \&& echo "deb https://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ jessie main" >> /etc/apt/sources.list.d/raspi.list#安裝依賴關(guān)系 RUN apt-get install \apt-transport-https \ca-certificates \curl \gnupg2 \software-properties-common#安裝 docker-compose RUN wget https://bootstrap.pypa.io/get-pip.py \&& python get-pip.py \&& pip install docker-compose RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group#修改時區(qū) RUN rm -rf /etc/localtime && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo "Asia/Shanghai" > /etc/timezone? ? ? ?4、自定義Dockerfile執(zhí)行構(gòu)建:
sudo docker build . -t auto-jenkins? ? ? ?5、等待構(gòu)建完成后,啟動 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寫在后面
? ? ? ?至此,我們已經(jīng)成功在樹莓派上運行 Jenkins ,筆者將在下一篇中講述從樹莓派上的Jenkins構(gòu)建項目并發(fā)布到云服務(wù)器上的Docker環(huán)境中。希望正在屏幕上閱讀本文的你,能順利在樹莓派上運行你的Jenkins 環(huán)境。構(gòu)建途中出現(xiàn)任何疑問,歡迎在評論區(qū)中留言。
總結(jié)
以上是生活随笔為你收集整理的边缘化搭建DotNet Core 2.1 自动化构建和部署环境的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 马斯克锐评人工智能:是人类最大的威胁之一
- 下一篇: 男子借朋友12万 1小时后借条变成白纸!