背景
在樹莓派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