每日一博 | 树莓派 4B 基于 Docker 搭建 DevOps 平台
背景 在树莓派PI4B上用开源软件容器化部署一套devops平台,可以用来正常做代码管理、仓库管理、项目管理和CICD等开发、运维等研发活动。 准备 硬件:Raspberry Pi 4B(8g版本) OS:centos7.9 基础环境:19.03.8 IP:10.0.1.155 架构 工具链 用途 端口 MYSQL 服务于禅道 3306 禅道 项目管理 8085 gogs 代码管理 3000,100022 nexus maven、npm、docker私服 8081,8082,8083 jenkins 持续集成、持续部署 8080:5000 部署MYSQL 镜像 biarms/mysql:5.7.30-linux-arm64v8:支持arm64v8,树莓派可用 规划 配置目录:无 配置文件:/opt/server/mysql/my.cnf 数据目录:/opt/server/mysql/data/ 日志目录:/opt/server/mysql/data/ 开放端口:3306 配置文件 mkdir -p /opt/server/mysql vi /opt/server/mysql/my.cnf 写入 [mysqld] ## server_id=1 ## binlog-ignore-db=mysql ## log-bin=replicas-mysql-bin ## binlog_cache_size=1M ## binlog_format=mixed ## max_allowed_packet=125M max_connections=200 max_connect_errors=10000 datadir =/opt/mysql/data socket =/opt/mysql/data/mysql.sock lower_case_table_names = 1 #Encoding collation-server = utf8mb4_bin init-connect='SET NAMES utf8mb4' character-set-server = utf8mb4 log_error=error.log [client] default-character-set = utf8mb4 socket =/opt/mysql/data/mysql.sock :wq关闭保存 启动容器 docker run -d \ --name mysqld \ -p 3306:3306 \ --privileged=true --restart=always \ -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=Fast@1234 \ -v /opt/server/mysql/my.cnf:/etc/mysql/my.cnf \ -v /opt/server/mysql/data:/opt/mysql/data \ biarms/mysql:5.7.30-linux-arm64v8 部署禅道 镜像 pi4k8s/php-mysql:7.2-apache:支持arm64v8,树莓派可用 软件 https://dl.cnezsoft.com/zentao/16.0/ZenTaoPMS.16.0.zip 规划 配置目录:无 配置文件:无 数据目录:/opt/server/zentao/data/ 日志目录:无 开放端口:8085 启动容器 docker run -itd --name zentao \ -p 8085:80 \ --privileged=true --restart always \ -e TZ=Asia/Shanghai \ -v /opt/server/zentao/data:/var/www/html \ pi4k8s/php-mysql:7.2-apache 安装 cd /opt/server/zentao/data curl -O -L -s "https://dl.cnezsoft.com/zentao/16.0/ZenTaoPMS.16.0.zip" yum install -y unzip unzip ZenTaoPMS.16.0.zip rm -f ZenTaoPMS.16.0.zip 初始化服务 初始化服务 访问地址:http://10.0.1.155:8085/zentaopms/www/install.php 首次访问 点“开始安装”按钮,进入“授权协议”页面 点“下一步”,进入“系统检查”页面 继续点“下一步”,进入“生成配置文件”页面 在本页配置时区、默认语言和数据库服务器信息后,点“保存”按钮,如果配置没有问题,则进入配置文件确认页面 继续点“下一步”,禅道系统安装成功。 根据个人偏好可自行选择经典管理模式或者全新项目集群管理模式进行使用。 删除容器 docker stop zentao && docker rm zentao # 强制删除 docker rm -f zentao 日常运维 docker start zentao docker restart zentao docker stop zentao 备份相关 • 数据目录:opt/server/zentao/data/ 部署gogs 镜像 pi4k8s/gogs:0.12.3:支持arm64v8,树莓派可用 规划 配置目录:无 配置文件:/opt/server/gogs/data/gogs/conf/app.ini 数据目录:/opt/server/gogs/data 日志目录:/opt/server/gogs/data/logs 开放端口:3000,10022 启动容器 docker run -d --name=gogs \ -p 10022:22 -p 3000:3000 \ --privileged=true --restart=always \ -e TZ=Asia/Shanghai \ -v /opt/server/gogs/data:/data \ pi4k8s/gogs:0.12.3 初始化服务 访问地址:http://10.0.1.155:3000 首次访问主要需要配置三方面内容,分别是数据库配置、应用基本配置和可选配置,下面分别介绍 数据库配置 gogs可以选择支持的数据库类型为MySQL、PostgreSQL、SQLite3、MSSQL 或 TiDB,这里我们选择内置的SQLite3,具体配置如下: 应用基本配置 这部分基本采用默认值,域名和应用URL根据实际情况配置即可,本笔记中使用了宿主机IP作为记录。 可选配置 这部分主要提供了邮件服务器设置和一些其它设置,另外比较重要的就是需要设置一个管理员,其它设置根据实际情况配置即可。 配置完后,直接点“继续安装”按钮,就可以进入首页了。 变更服务 初始化服务后,会生成配置文件/opt/server/gogs/data/gogs/conf/app.ini,该文件内容完全对应初始化服务除管理员信息外的其它配置信息,如果后续需要修改具体配置,可以直接修改这个文件,修改后重启容器即生效。 删除容器 docker stop gogs && docker rm gogs # 强制删除 docker rm -f gogs 日常运维 docker start gogs docker restart gogs docker stop gogs 备份相关 数据目录:/opt/server/gogs/data/ 配置文件:/opt/server/gogs/data/gogs/conf/app.ini 部署nexus3 镜像 klo2k/nexus3:3.37.1-01:支持arm64v8,树莓派可用 规划 配置目录:无 配置文件:无 数据目录:/opt/server/nexus3/sonatype-work 日志目录:无 开放端口:8081,8082,8083 启动容器 mkdir -p /opt/server/nexus3/sonatype-work chown 200.200 /opt/server/nexus3/sonatype-work docker run -d --name=nexus3 \ -p 8081:8081 -p 8082:8082 -p 8083:8083 \ --privileged=true --restart=always \ -e TZ=Asia/Shanghai \ -v /opt/server/nexus3/sonatype-work:/opt/sonatype/sonatype-work \ klo2k/nexus3:3.37.1-01 初始化服务 访问地址:http://10.0.1.155:8081 首次访问 点sign in 弹出登录窗口如下 输入用户名和密码,点“sign in”按钮登录后显示安装窗口如下 点“Next”按钮进入下一步,显示设置新密码窗口如下 输入新密码后,点“Next”按钮进入下一步,显示设置是否允许匿名访问窗口如下 笔记中选择允许,点“Next”按钮进入下一步,显示安装完成界面如下 点“Finish”按钮,完成安装,接下来就可以正常使用nexus3了。 删除容器 docker stop nexus3 && docker rm nexus3 # 强制删除 docker rm -f nexus3 日常运维 docker start nexus3 docker restart nexus3 docker stop nexus3 备份相关 数据目录:/opt/server/nexus3/sonatype-work/ 部署jenkins 镜像 • pi4k8s/jenkins:openjdk8-2.327:支持arm64v8,树莓派可用 规划 • 配置目录:无 • 配置文件:无 • 数据目录:/opt/server/jenkins/data • 日志目录:无 • 开放端口:8080,50000 启动容器 docker run -d --name=jenkins \ -p 8080:8080 -p 50000:50000 \ --privileged=true --restart=always \ -e TZ=Asia/Shanghai \ -v $(which docker):/usr/bin/docker \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /opt/server/jenkins/data:/root \ pi4k8s/jenkins:openjdk8-2.327 初始化服务 • 访问地址:http://10.0.1.155:8080 首次访问 输入密码后,点“继续”按钮 选择“安装推荐的插件”,进入下一步 根据网络情况,插件安装的时间各有差异,有可能会比较久。 但网络情况有时候是个比较忧伤的话题,如果确实安装没有什么进展,会显示下面一个令人有些沮丧的界面 如果安装顺利完成后,自动跳转下一步;如果真得离线了,那就跳过插件安装,也进入下一步如下 创建用户或者使用admin账户都可以,根据实际情况,继续进入下一步 根据实际情况配置jenkins URL,进入下一步 到这里,提示jenkins已就绪。 删除容器 docker stop jenkins && docker rm jenkins # 强制删除 docker rm -f jenkins 日常运维 docker start jenkins docker restart jenkins docker stop jenkins 备份相关 数据目录:opt/server/jenkins/data/ 关于离线安装 大多数情况下,因为网络原因,我们不得不选择离线安装模式。其实这里的离线安装主要指的就是插件离线安装,应对我们有两种方法:一个方法是通过修改插件更新中心地址,这个可以参考 https://jenkins-zh.cn/tutorial/management/plugin/update-center/ ;另外一个就是用其他方式下载插件,再把插件上传到jenkins。至于本笔记中需要用到的插件我已经打包 ,下载后解压到/opt/server/jenkins/jenkins_home即可。 另附解压命令供参考 cd /opt/server/jenkins/data/.jenkins tar -zxf plugins.tar.gz