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-engine2. 安装所需要的依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm23.添加yum的repo文件(对于国内用户优先选择阿里云)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo4.生成缓存,提高搜索安装软件的速度
sudo yum makecache fast5.安装社区版docker
sudo yum -y install docker-ce6.修改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 docker8.设置开机自动启动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--gateway172.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 IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES31c9a09bbd4dportainer/portainer"/portainer"About a minute agoUp About a minute0.0.0.0:9000->9000/tcp, :::9000->9000/tcpportainer2)然而我们使用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用户密码需要8位

文章插图
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 mysqlmysql 端口为:13306(防止服务器被攻击)设置密码为:password (请自行更改)
2)配置远程访问(root),使用shell命令进入mysql 容器
docker exec -it mysql bash登录mysql
mysql -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=dronedrone/drone-e DRONE_GOGS_SERVER=http://ip:3000 此处为gogs的访问地址-e DRONE_RPC_SECRET=dronerpc666 dronerpc666 非固定但是部署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-dockerdrone/drone-runner-docker-e DRONE_RPC_HOST=ip:3080 drone的访问地址-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,再次重新打包就会生效【【小白向】基于Docker使用Gogs,Drone以及drone-runner-docker的自动化部署】
文章插图
感谢阅读,如果有什么问题可以及时联系我
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
