写在前面

写这篇文章的缘由是由于笔者的对新兴技术方向有所追求,但个人资产有限,只能容许购买一台阿里云低配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、安装包

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

构建自定义镜像

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

1、新建Dockerfile:

cd ~$ sudo nano Dockerfile

2、查看docker组id:

cat /etc/group

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

FROM jenkins             #可将 jenkins 替换 loongle/rpi-jenkins:latest 以解决自己构建 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#安装依赖关系
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#修改时区
RUN rm -rf /etc/localtime && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo "Asia/Shanghai" > /etc/timezone

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 环境。构建途中出现任何疑问,欢迎在评论区中留言。

边缘化搭建DotNet Core 2.1 自动化构建和部署环境相关推荐

  1. 边缘化搭建DotNet Core 2.1 自动化构建和部署环境(上)

    写在前面 写这篇文章的缘由是由于笔者的对新兴技术方向有所追求,但个人资产有限,只能容许购买一台阿里云低配1核2G服务器.服务器上搭建了 Centos7 & Docker & Jenki ...

  2. 边缘化搭建 DotNet Core 2.1 自动化发布和部署(下)

    写在前面 本篇文章是上一篇边缘化搭建 DotNet Core 2.1 自动化发布和部署(上)的后续操作,本文主要讲解如何开启Docker Remote API,开启Remote API后的权限安全问题 ...

  3. dotNet Core 3.1 使用 Aspose (部署 Docker)

    在之前的文章<dotNET Core中使用Aspose(部署Docker)>中介绍了在 dotNet Core2.1 中使用 Aspose ,并部署到 Docker 中,现在 dotNET ...

  4. SpringCloud+Docker+Jenkins+GitLab+Maven实现自动化构建与部署实战

    作者:寅务 www.jianshu.com/p/bdb0642b7495 1.前言与初衷 本文章会涉及Docker常见命令基础知识点结合不同场景实操一起使用. 本文章会涉及结合工作过程中部署不同环境服 ...

  5. AWS攻略——使用CodeBuild进行自动化构建和部署Lambda(Python)

    Aws Lambda是Amazon推出的"无服务架构"服务.我们只需要简单的上传代码,做些简单的配置,便可以使用.而且它是按运行时间收费,这对于低频访问的服务来说很划算.具体的介绍 ...

  6. AWS攻略——使用CodeBuild进行自动化构建和部署静态网页

    首先声明下,使用"CodeBuild"部署并不是"正统"的方案,因为AWS提供了"CodeDeploy".如果不希望引入太多基础设施,可以考 ...

  7. gitlab ci 自动化部署_前端gitLab加jenkins自动化构建和部署,以及服务器常用的linux命令行操作,免密登录...

    常用的linux命令行操作 将项目部署到服务器后,需要查看文件是否已经部署成功,已经对文件进行增删改查操作,就需要用到命令行操作,常用操作如下: ll 罗列出当前文件或目录的详细信息,含有时间.读写权 ...

  8. Centos7 Docker Jenkins ASP.NET Core 2.0 自动化发布和部署

    写在前面 Docker一直很火热,一直想把原本的Jenkins自动部署工具搬到Docker上面,无奈今年一直忙于各种事情,迟迟未实施这个事情,正好迎来了dotnet core 2.0 的正式发布,升级 ...

  9. Ubuntu GitLab CI Docker ASP.NET Core 2.0 自动化发布和部署(1)

    相关博文: Ubuntu 简单安装和配置 GitLab Ubuntu 简单安装 Docker Ubuntu Docker 简单安装 GitLab Ubuntu Docker 安装和配置 GitLab ...

最新文章

  1. 使用cnpm代替npm
  2. hive 字符串前有 ’ 符号
  3. java int == integer_java int与integer的区别
  4. GraphQL 入门第一篇
  5. qt最大化和还原实现_研究进展 | 水生所关于细菌异化型硝酸盐还原成铵与反硝化脱氮两种途径抉择的分子调控机制研究取得进展...
  6. JavaMail中附件名称有乱码
  7. 将数据从MySql导入数据至SQL Server 2000
  8. 清华孵化、张钹加盟、天使估值5个亿,创业半年的RealAI什么来头?
  9. hdu 1520(树形dp)
  10. java反编译 mac_java反编译工具Mac版-jd-gui for Mac下载 V1.6.6-PC6苹果网
  11. 【转】把我这段时间的教训分享一下,希望北邮校友们以我为鉴。
  12. 创新大赛成就创业梦想 超30%入榜应用获投资意向
  13. 计算机图形学(二)——画一个三角形1.0
  14. IDEA中springboot项目启动慢
  15. 医院在线预约挂号系统开源
  16. 云计算主要包含哪些基本特征?
  17. 现在,您可以在YouTube上播放免费的,广告支持的电影
  18. 信息学奥赛一本通(c++)
  19. 关于jeecg 项目的莫名其妙的问题
  20. 大厂音视频职位面试题目--今日头条

热门文章

  1. HDU2855 Fibonacci Check-up 矩阵的应用
  2. php文件上传错误代码
  3. 分享21款漂亮的WordPress高级主题
  4. 孙鑫MFC笔记之十四--多线程同步与异步套接字编程
  5. c++用WinForm做界面的实现
  6. java 连接 oracle 10_java-连接到oracle 10g数据库时,获得IOException“...
  7. javaheapspace解决方案_高手总结的9种 OOM 常见原因及解决方案
  8. SQLmap的下载和安装,以及其参数大全和使用教程(值得收藏)
  9. Linux主机系统加固
  10. java session事件,Java开发网 - 再论Session事件的捕获