树莓派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,树莓派可用
软件
规划
- 配置目录:无
- 配置文件:无
- 数据目录:/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
初始化服务
初始化服务
首次访问
点“开始安装”按钮,进入“授权协议”页面
点“下一步”,进入“系统检查”页面
继续点“下一步”,进入“生成配置文件”页面
在本页配置时区、默认语言和数据库服务器信息后,点“保存”按钮,如果配置没有问题,则进入配置文件确认页面
继续点“下一步”,禅道系统安装成功。
根据个人偏好可自行选择经典管理模式或者全新项目集群管理模式进行使用。
删除容器
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
初始化服务
首次访问主要需要配置三方面内容,分别是数据库配置、应用基本配置和可选配置,下面分别介绍
数据库配置
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
初始化服务
首次访问
点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

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
PaddleHub新增100+优质模型,少量代码快速搭建AI魔镜带你对话未来!
你是否也曾经幻想能和未来的自己对话,问问未来的自己过的怎么样,当初的梦想都实现了吗?现在PaddleHub可以帮你轻松实现,先快速看下效果。 这个项目中用到了PaddleHub中的最新模型,分别用到了语音识别、图像生成、对话系统、声音克隆、唇纹生成等能力,通过短短十几行代码实现了和未来的自己进行对话。 那么这么厉害的项目是如何实现的呢?我们先来看下技术拆解。 首先我们要模拟未来自己的样貌,也就是生成人脸变老的图像。我们选择了一个能够获得变老效果的模型styleganv2_editing,这个模型是PaddleGAN贡献的一个高质量人脸生成的模型,可以对年龄、性别、眼距等等十几种人脸属性进行编辑,能力十分强大。 第二步,我们要实现人机对话,需要先将一段音频识别成文字,再根据识别出的文字,生成回应的内容。于是我们在PaddleHub的模型库中选择了来源于PaddleSpeech的效果较好的中文语音识别模型u2_conformer_wenetspeech和来源于PaddleNLP的百度自研的基于十亿级别的中文对话数据plato-mini。 接下来,我们要把回应的内容变成拥有自己音色的语音。这...
-
下一篇
Flutter 让你的Dialog脱胎换骨吧!(Attach,Dialog,Loading,Toast)
前言 Q:你一生中闻过最臭的东西,是什么? A:我那早已腐烂的梦。 兄弟萌!!!我又来了! 这次,我能自信的对大家说:我终于给大家带了一个,能真正帮助大家解决诸多坑比场景的pub包! 将之前的flutter_smart_dialog,在保持api稳定的基础上,进行了各种抓头重构,解决了一系列问题 现在,我终于可以说:它现在是一个简洁,强大,侵入性极低的pub包! 关于侵入性问题 之前为了解决返回关闭弹窗,使用了一个很不优雅的解决方法,导致侵入性有点高 这真是让我如坐针毡,如芒刺背,如鲠在喉,这个问题终于搞定了! 同时,我在pub包内部设计了一个弹窗栈,能自动移除栈顶弹窗,也可以定点移除栈内标记的弹窗。 存在的问题 使用系统弹窗存在一系列坑,来和各位探讨探讨 必须传BuildContext 在一些场景必须多做一些传参工作,蛋痛但不难的问题 loading弹窗 使用系统弹窗做loading弹窗,肯定遇到过这个坑比问题 loading封装在网络库里面:请求网络时加载loading,手贱按了返回按钮,关闭了loading 然后请求结束后发现:特么我的页面怎么被关了!!! 系统弹窗就是一个路由页...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- MySQL数据库在高并发下的优化方案
- SpringBoot2配置默认Tomcat设置,开启更多高级功能