Gogs是基于Go語言撰寫的可以替代gitlab的代碼托管平臺,它沒有gitlab那么龐大且不需要占用大量資源,對小型服務器相對于比較友好,我們甚至可以使用樹莓派搭建,

服務器配置:
* 作業系統:CentOS 7.6 64bit
* 服務器規格:CPU【1核】 記憶體【2GB】
* 磁盤:系統盤60GB
安裝程序(一):docker環境準備
1. 安裝docker,準備部署環境(先清除有關docker 的所有檔案)
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
2. 安裝所需要的依賴包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3.添加yum的repo檔案(對于國內用戶優先選擇阿里云)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.生成快取,提高搜索安裝軟體的速度
sudo yum makecache fast
5.安裝社區版docker
sudo yum -y install docker-ce
6.修改docker 鏡像源地址加速
cat /etc/docker/deamon.json
如果沒有就創建一個 deamon.json 在 /etc/docker 目錄下
cd /etc/docker/
touch deamon.json
內容為(可以選擇163加速或者去阿里云自己生成一個docker加速地址):
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
7.重新加載docker 服務配置,讓加速地址生效并重啟(啟動)docker
sudo systemctl daemon-reload
重啟:
sudo systemctl restart docker
啟動
sudo systemctl stop docker
8.設定開機自動啟動docker(可選),可以連帶自動啟動帶自動啟動的容器
systemctl enable docker
安裝程序(二):docker容器部署(Portainer/mysql/gogs/drone CI/drone-runner-docker)
1.先創建我們固定的ip網段,可以防止服務器卡死宕機強制重啟后,導致的容器ip自動重啟后產生變化,而導致docker容器內部通過網段通信的問題
docker network create --subnet=172.172.0.0/24 --gateway 172.172.0.1 docker-mynet
2.Portainer可以幫助我們查看docker各個容器的相關資訊以及事實容器啟動日志以及對各個容器進行操作,所以優先選擇安裝,
docker run -p 9000:9000 --net docker-mynet --ip 172.172.0.3 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /soft/docker/portainer/data:/data -v /soft/docker/portainer/public:/public -d portainer/portainer
運行此命令會幫我們自動pull portainer:latest 鏡像,等待容器啟動完成
--net docker-mynet指定網段
--ip 172.172.0.3指定ip 服務器啟動后不會發生改變
--restart=always隨著docker 啟動而啟動
1)使用dokcer ps 命令可以看到portainer容器已經啟動
| CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORTS | NAMES |
|---|---|---|---|---|---|---|
| 31c9a09bbd4d | portainer/portainer | "/portainer" | About a minute ago | Up About a minute | 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp | portainer |
2)然而我們使用ip:9000卻發現無法訪問 ,是因為我們用-v /soft/docker/portainer/public:/public 將portainer的頁面檔案夾掛載在宿主機的/soft/docker/portainer/public目錄下了,而且是個空檔案夾,所以無法訪問
https://files-cdn.cnblogs.com/files/blogs/680867/Portainer-CN.zip
使用上面的地址下載漢化檔案,放置在/soft/docker/portainer/public 并解壓
使用docker restart portainer后,使用ip:9000即可訪問(前提是要設定centos防火墻)
3)創建portainer用戶密碼需要6位

4)選擇連接docker(本地需要在創建容器的時候使用掛載命令-v /var/run/docker.sock:/var/run/docker.sock,點擊連接即可)

5)portainer 漢化完成主頁面,可以根據自己的需要查看相關容器資訊 感謝"Mark" 網址:https://www.quchao.net/Portainer-CN.html

6)使用portainer 查看容器相關資訊

點擊左側容器我們可以看到有一個容器,也就是我們剛剛創建的portainer容器,
我們可以發現此容器的創建時間,以及ip等相關資訊,也可以對此容器進行洗掉,重啟等一系列操作(避免shell 命令),點擊紅圈圖示可以查看容器日志,綠圈圖示可以進入容器環境中(如進入容器對mysql進行配置等),
3.mysql容器的創建配置(由于gogs持久化需要用到資料庫,我們選擇安裝myql【Gogs 要求安裝 MySQL、PostgreSQL、SQLite3、MSSQL 或 TiDB,】)
1)創建mysql容器
docker run --name mysql --restart=always -p 13306:3306 --ip 172.172.0.5 --net docker-mynet -v /soft/docker/database/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -d mysql
mysql 埠為:13306(防止服務器被攻擊)設定密碼為:password (請自行更改)
2)配置遠程訪問(root),使用shell命令
進入mysql 容器
docker exec -it mysql bash
登錄mysqlmysql -u root -p
使用mysql 資料庫use mysql;
配置權限并重繪:
ALTER USER 'root'@'%' I:DENTIFIED WITH mysql_native_password BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;
3)遠程連接mysql 并創建gogs資料庫(gogs要求:如果您使用 MySQL,請使用 INNODB 引擎以及 utf8_general_ci 字符集)
省略
4.gogs的創建配置
docker run -p 10022:22 -p 3000:3000 --name=gogs --net docker-mynet --ip 172.172.0.11 --restart=always -e TZ="Asia/Shanghai" -v /soft/docker/gogs:/data -d gogs/gogs
安裝完畢后可以訪問ip:3000 來訪問gogs容器的首次安裝頁面
1)配置持久化資料庫

2)配置訪問地址配置

3)選擇配置(如果不配置管理員也可以在安裝完畢后,第一個注冊也是管理員)

4)安裝完成后會自動進入主頁(使用方法和github類似且相較于簡單)

5)重啟gogs容器修改app.ini(需要注意的坑)
如果安裝完畢后,將容器重啟后,會發現再次訪問ip:3000會無法訪問(不一定會遇到)
進入gogs的宿主機掛載目錄/soft/docker/gogs/gogs/conf修改app.ini,再次解決即可解決

6)在gogs中上傳代碼(自行摸索吧)

5.drone CI的創建配置
docker run -v /soft/docker/drone:/data --net docker-mynet --ip 172.172.0.12 -e DRONE_AGENTS_ENABLED=true -e DRONE_GOGS_SERVER=http://ip:3000 -e DRONE_RPC_SECRET=dronerpc666 -e DRONE_SERVER_HOST=ip:3080 -e DRONE_SERVER_PROTO=http -e DRONE_USER_CREATE=username:demon471,admin:true -e TZ="Asia/Shanghai" -p 3080:80 --restart=always --detach=true --name=drone drone/drone
-e DRONE_GOGS_SERVER=http://ip:3000此處為gogs的訪問地址
-e DRONE_RPC_SECRET=dronerpc666dronerpc666 非固定但是部署drone-runner-docker 需要一個引數一致
-e DRONE_SERVER_HOST=ip:3080配置drone的訪問地址
-e DRONE_USER_CREATE=username:demon471,admin:true設定管理員賬號最好和gogs的管理員一致(也可以自作更改)
1)訪問ip:3080即可訪問登錄drone,就可以看到專案,如果沒有可以點擊sync同步gogs中的代碼即可,

2)點擊同步到的專案,可以設定drone中的專案屬性


3)回傳gogs中的專案設定可以看到webhook中有一個剛剛我們創建的屬于drone的webhook

5.drone-runner-docker的創建配置
docker run -d -v /var/run/docker.sock:/var/run/docker.sock --net docker-mynet --ip 172.172.0.13 -e DRONE_RPC_PROTO=http -e DRONE_RPC_HOST=ip:3080 -e DRONE_RPC_SECRET=dronerpc666 -e DRONE_RUNNER_CAPACITY=2 -e DRONE_RUNNER_NAME=runner-docker -e TZ="Asia/Shanghai" -p 3000:3000 --restart always --name runner-docker drone/drone-runner-docker
-e DRONE_RPC_HOST=ip:3080drone的訪問地址
-e DRONE_RPC_PROTO=http有證書可以是https
-e DRONE_RPC_SECRET=dronerpc666需要和drone的配置一樣
部署程序(一)主要檔案以及目錄結構:
1.專案結構以及主要檔案

2. 【.drone.yml】檔案內容
查看地址:https://blog-static.cnblogs.com/files/blogs/680867/.drone_yml.css
其中 ssh_password需要在drone中的專案配置
3. 【Dockerfile】檔案內容
查看地址:https://blog-static.cnblogs.com/files/blogs/680867/Dockerfile.css
4. 【run.sh】檔案內容
查看地址:https://files-cdn.cnblogs.com/files/blogs/680867/run.sh
部署程序(二)進行測驗打包:
待所有的檔案都可以提交至gogs中就可以測驗打包

打包成功內容

我們可以針對于專案webhook方式來進行打包與否,如有提交就打包等等,
后言:如果發現maven打包很慢可以通過修改settings.xml來提速位置/mydata/maven/cache,再次重新打包就會生效

感謝閱讀,如果有什么問題可以及時聯系我
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/283106.html
標籤:其他


