zoukankan      html  css  js  c++  java
  • 边缘化搭建 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.安装包

    $ 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

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

    构建自定义镜像

      单纯的直接构建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 root
    
    ARG 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 http://mirrors.aliyun.com/raspbian/raspbian/ stretch main contrib non-free rpi" > /etc/apt/sources.list && echo "deb-src http://mirrors.aliyun.com/raspbian/raspbian/ stretch main contrib 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 USER jenkins

     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

  • 相关阅读:
    Leetcode Excel Sheet Column Number
    AlgorithmsI PA2: Randomized Queues and Deques Subset
    AlgorithmsI PA2: Randomized Queues and Deques RandomizedQueue
    AlgorithmsI PA2: Randomized Queues and Deques Deque
    AlgorithmsI Programming Assignment 1: PercolationStats.java
    hdu多校第四场 1003 (hdu6616) Divide the Stones 机智题
    hdu多校第四场 1007 (hdu6620) Just an Old Puzzle 逆序对
    hdu多校第四场1001 (hdu6614) AND Minimum Spanning Tree 签到
    hdu多校第三场 1007 (hdu6609) Find the answer 线段树
    hdu多校第三场 1006 (hdu6608) Fansblog Miller-Rabin素性检测
  • 原文地址:https://www.cnblogs.com/LongJiangXie/p/9964925.html
Copyright © 2011-2022 走看看