边缘化搭建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 update

2.安装包

640?wx_fmt=png

3.添加Docker的官方GPG密钥:

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -$ sudo apt-key fingerprint 0EBFCD88

4.设置稳定的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

构建镜像

  因为树莓派本身的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-jenkins

2.进入项目并开始构建:

$ cd rpi-jenkins
$ sudo docker build . -t jenkins

3.读者可以忽略此步骤,直接到构建自定义镜像的操作。

构建自定义镜像

  单纯的直接构建Jenkins并不能符合本文的主题,现在我们需要通过自定义Dockerfile来扩充我们原本的Jenkins环境设置。当然,如果直接修改笔者GitHub项目里的Dockerfile进行构建,那么这一步也是可以忽略的。见仁见智,看读者喜欢怎么方便怎么来,喜欢怎么折腾就怎么折腾,此处构建没有固定的操作方式,只要能确保树莓派能运行Jenkins就Ok啦。

1.新建Dockerfile:

$ cd ~$ sudo nano Dockerfile

2.查看docker组id:

cat /etc/group

640?wx_fmt=png

3.在Dockerfile插入如下代码后,执行保存:

640?wx_fmt=png

4.自定义Dockerfile执行构建:

$ sudo docker build . -t auto-jenkins

5.等待构建完成后,启动 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

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/318733.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客题霸 [丑数] C++题解/答案

牛客题霸 [丑数] C题解/答案 题目描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 题解:…

codeforces1549 F1 - Gregor and the Odd Cows (Easy)(皮克公式)

皮克公式:求格点多边形面积 AB2I−1A\frac B 2I-1 A2B​I−1 其中 A:area 面积 B:boundary 边界上整点的个数 I:interior 多边形内部点的个数 对于两个整数点(x1,y1),(x2,y2)(x_1,y_1),(x_2,y_2)(x1​,y1​),(x2​,y2​)来说&…

P3288-[SCOI2014]方伯伯运椰子【0/1分数规划,负环】

正题 题目链接:https://www.luogu.com.cn/problem/P3288 题目大意 给出nnn个点mmm条边的一张图,没条边iii流量为cic_ici​,费用是did_idi​,然后缩小一个流量费用是aia_iai​,增加一个流量费用是bib_ibi​。 要求改动图之后最大…

不止代码:ybtoj-消除木块(区间DP)

题目描述 n个木块排成一列,每个木块都有一个颜色。 每次,你都可以点击一个木块,这样被点击的木块以及和它相邻并且同色的木块就会消除。 如果一次性消除了k个木块,那么就会得到k*k分。 给定你一个游戏初始状态,请你…

.NET Core实战项目之CMS 第六章 入门篇-Vue的快速入门及其使用

写在前面上面文章我给大家介绍了Dapper这个ORM框架的简单使用,大伙会用了嘛!本来今天这篇文章是要讲Vue的快速入门的,原因是想在后面的文章中使用Vue进行这个CMS系统的后台管理界面的实现。但是奈何Vue实现的SPA有一定的门槛,不太…

牛客练习赛10 F-序列查询(莫队+链表)

F-序列查询 v5zsq题解 假设数字xxx在区间[l,r]种出现y次,那么包含x的子区间个数为2r−l1−y⋅(2y−1)2^{r-l1-y}(2^y-1)2r−l1−y⋅(2y−1),因此对询问贡献是x⋅2r−l1−y⋅(2y−1)x[2r−l1−2r−l1−y]x2^{r-l1-y}(2^y-1)x[2^{r-l1}-2^{r-l1-y}]x⋅2r…

牛客题霸 [有关阶乘的两个问题1] C++题解/答案

牛客题霸 [有关阶乘的两个问题1] C题解/答案 题目描述 给定一个非负整数N,返回N!结果的末尾为0的数量 题解: 这个题有技巧 102*5,也就是说有一对2和5就会贡献一个0,但是2的数量远远大于5,所以只用统计五即可 代码&#xff1a…

不止代码:ybtoj-棋盘分割(二维区间dp)

题目描述 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的部分继续如此分割,这样割了n-1次后,连同最后剩下的矩形棋盘共有n块矩形棋盘。 (每次切割都只能沿着棋盘格子的边进行) 原棋盘上…

P7717-「EZEC-10」序列【Trie】

正题 题目链接:https://www.luogu.com.cn/problem/P7717 题目大意 求有多少个长度为nnn的序列aaa满足&#xff0c;都在[0,k][0,k][0,k]的范围内且满足mmm个限制刑如&#xff1a;axxorayza_x\ xor\ a_yzax​ xor ay​z 0≤n,m≤5105,0≤k<2300\leq n,m\leq 5\times 10^5,0\…

ASP.NET Core MVC 授权的扩展:自定义 Authorize 和 IApplicationModelProvide

一、概述ASP.NET Core MVC 提供了基于角色( Role )、声明( Chaim ) 和策略 ( Policy ) 等的授权方式。在实际应用中&#xff0c;可能采用部门&#xff08; Department , 本文采用用户组 Group &#xff09;、职位 ( 可继续沿用 Role )、权限( Permission )的方式进行授权。要达…

牛客题霸 [分糖果问题] C++题解/答案

牛客题霸 [分糖果问题] C题解/答案 题目描述 一群孩子做游戏&#xff0c;现在请你根据游戏得分来发糖果&#xff0c;要求如下&#xff1a; 每个孩子不管得分多少&#xff0c;起码分到一个糖果。任意两个相邻的孩子之间&#xff0c;得分较多的孩子必须拿多一些糖果。(若相同则…

不止代码 洛谷P1006 传纸条(dp)

传送门 走两次 dp[x1][y1][x2][y2]表示两条路分别到两个点的坐标后的最大值 为了防止走重&#xff0c;dp[x1][y1][x1][y1]赋值为无穷小 时间复杂度O&#xff08;n^4&#xff09; 代码 #include<cstdio> #include<cstring> #include<algorithm> #include<…

通俗易懂,C#如何安全、高效地玩转任何种类的内存之Span

前言作为.net程序员&#xff0c;使用过指针&#xff0c;写过不安全代码吗&#xff1f;为什么要使用指针&#xff0c;什么时候需要使用它&#xff1f;如果能很好地回答这两个问题&#xff0c;那么就能很好地理解今天了主题了。C#构建了一个托管世界&#xff0c;在这个世界里&…

P5180-[模板]支配树

正题 题目链接:https://www.luogu.com.cn/problem/P5180 题目大意 给出nnn个点的一张有向图&#xff0c;求每个点支配的点数量。 1≤n≤2105,1≤m≤31051\leq n\leq 2\times 10^5,1\leq m\leq 3\times 10^51≤n≤2105,1≤m≤3105 解题思路 首先定义半支配点semixsemi_xsemix…

P4062 [Code+#1]Yazid 的新生舞会(区间绝对众数+分治/树状数组维护高维前缀和)

P4062 [Code#1]Yazid 的新生舞会 杭电多校懂得都懂 Code1 分治 比较喜欢分治的做法&#xff0c;非常好写。skylee大佬题解 首先对于任何一个区间来说&#xff0c;由于两个端点不确定性非常难以一次性统计多组区间&#xff0c;因为它们没有相似之处。 考虑分治&#xff0c;…

牛客题霸 [判断回文] C++题解/答案

牛客题霸 [判断回文] C题解/答案 题目描述 给定一个字符串&#xff0c;请编写一个函数判断该字符串是否回文。如果回文请返回true&#xff0c;否则返回false。 题解&#xff1a; 左右两端同时向中间缩 代码&#xff1a; class Solution { public:/*** 代码中的类名、方法…

AC自动机:例题与机制详解

介绍 AC自动机是kmp算法和trie树的结合 大体就是做这样的题用&#xff1a; 可以发现&#xff0c;这题和trie树的区别是把多个单词往一篇文章匹配&#xff0c;而trie恰好相反 匹配的时候其实就是判断子串&#xff0c;所以又用到了kmp 定义失配指针nxt[i]&#xff1a;表示root到…

.NET Core实战项目之CMS 第七章 设计篇-用户权限极简设计全过程

写在前面这篇我们对用户权限进行极简设计并保留其扩展性。首先很感谢大家的阅读&#xff0c;前面六章我带着大家快速入门了ASP.NET Core、ASP.NET Core的启动过程源码解析及配置文件的加载过程源码解析并引入依赖注入的概念、Git的快速入门、Dapper的快速入门、Vue的快速入门。…

P4428-[BJOI2018]二进制【树状数组,set】

正题 题目链接:https://www.luogu.com.cn/problem/P4428 题目大意 长度为nnn的0/10/10/1串要求支持 修改一个位置求区间[l,r][l,r][l,r]有多少个子区间重排后的二进制数可以被三整除 1≤n≤1051\leq n\leq 10^51≤n≤105 解题思路 首先有22k%31(k∈Z)2^{2k}\%31(k\in Z)22k…

2021“MINIEYE杯”中国大学生算法设计超级联赛(5)Random Walk 2(推式子+矩阵逆+矩阵乘)

Random Walk 2 【2.4】Gauss-Jordan消元法求矩阵的逆 高斯消元求矩阵的逆&#xff0c;伴随单位矩阵一起消元即可。 [A,I]→[I,A−1][\text A,\text I]\to [\text I,\text A^{-1}][A,I]→[I,A−1] 移项变形&#xff0c;后就是个矩阵的逆&#xff0c;为啥赛时不写&#xff1f;&a…