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

登录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=drone drone/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-docker drone/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的自动化部署的更多相关文章

  1. 基于【SpringBoot】的微服务【Jenkins】自动化部署

    最近,也是抽空整理了一些在工作中积累的经验,通过博客记录下来分享给大家,希望能对大家有所帮助: 一.关于自动化部署 关于自动化部署的优点,我就不在这里赘述了:只要想想手工打包.上传.部署.重启的种种, ...

  2. Kubernetes笔记(三):Gitlab+Jenkins Pipeline+Docker+k8s+Helm自动化部署实践(干货分享!)

    通过前面两篇文章,我们已经有了一个"嗷嗷待哺"的K8s集群环境,也对相关的概念与组件有了一个基本了解(前期对概念有个印象即可,因为只有实践了才能对其有深入理解,所谓"纸上 ...

  3. 快速部署私人git服务--基于docker化Gogs

    Gogs 一款极易搭建的自助 Git 服务. 环境 Linux系统 docker 获取gogs镜像,并运行, docker run -it --: -p : -v /var/gogs:/data go ...

  4. linux上Docker安装gogs私服

    一.背景介绍 Gogs 是一款类似GitHub的开源文件/代码管理系统(基于Git),Gogs 的目标是打造一个最简单.最快速和最轻松的方式搭建自助 Git 服务.使用 Go 语言开发使得 Gogs ...

  5. linux上Docker安装gogs私服亲测(详解)

    一.前言 有网友问我为什么要使用私服,可能大部分人都不是太懂,网上那么多存储仓库而且好用方便,但是你想过没有如果企业中的项目,放在人家的仓库上这个安全性不是太好,所以说一般企业都会有自己的私服.本章教 ...

  6. .NetCore基于Jenkins和Gogs的自动化部署方案

    准备工作 Jenkins和gogs的安装配置可以看前两篇:Jenkins安装.配置与说明  和 gogs安装与说明(docker) 此外,因为还要安装.net core的SDK和Git工具: 安装.n ...

  7. 欢迎阅读daxnet的新博客:一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统

    2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客.当然,我写博客也不是从2008年才开始的,在更早时候,也在CSDN和系统分析员协会(之后名为"希赛网" ...

  8. 一个基于Microsoft Azure、ASP.NET Core和Docker的博客系统

    2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客.当然,我写博客也不是从2008年才开始的,在更早时候,也在CSDN和系统分析员协会(之后名为“希赛网”)个人空间发布过一些 ...

  9. 基于Microsoft Azure、ASP.NET Core和Docker的博客系统

    欢迎阅读daxnet的新博客:一个基于Microsoft Azure.ASP.NET Core和Docker的博客系统   2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客 ...

随机推荐

  1. 记一次Drone无法触发构建的问题

    问题 好巧不巧,当你晚上准备上线的时候,在下午临近下班的时候CI&CD工具出问题了,提交代码不能触发构建,不能上线了,Drone平台那边也下班了,正好CICD依赖的公司git仓库也出问题了(就 ...

  2. 《从零开始TypeScript》系列 - 基础数据类型

    TypeScript 是 JavaScript 的超集,这里我们只讨论两者中的不同的部分,或者需要注意的部分 数组 Array:在TypeScript中,有两种方式来定义一个数组: 在元素类型后面接上 ...

  3. 浅谈.Net Core后端单元测试

    目录 1. 前言 2. 为什么需要单元测试 2.1 防止回归 2.2 减少代码耦合 3. 基本原则和规范 3.1 3A原则 3.2 尽量避免直接测试私有方法 3.3 重构原则 3.4 避免多个断言 3 ...

  4. 我给Apache顶级项目贡献了点源码。

    这是why技术的第 91 篇原创文章 这篇文章其实并没有什么技术性的分享,从我的角度而言,更多是记录和思考. 把我对于源码和之前写的部分文章反哺给我的一些东西,带来的一点点思考分享给大家. 一行源码 ...

  5. Flask模板注入

    Flask模板注入 Flask模板注入漏洞属于经典的SSTI(服务器模板注入漏洞). Flask案例 一个简单的Flask应用案例: from flask import Flask,render_te ...

  6. gtk---实现一个登录界面

    输入框 如果在GTK+中需要输入一个字符串,可以使用输入框,这是一个单行的输入构件,可以用于输入和显示正文内容. 输入框的基本操作函数 1.gtk_entry_new(void); 这是新建一个输入框 ...

  7. 前端开发:基于cypress的自动化实践

    作为一个伪开发,在一个平台项目中负责前端的开发工作,开发框架为vue,本文我会站在前端开发的角度介绍,我是如何使用cypress的. [x] 如何在vue中使用cypress [x] 如何运行cypr ...

  8. 什么是SSR SSR有什么用 如何使用使用SSR

    什么是SSR 以下信息来自维基百科: Shadowsocks(简称SS)是一种基于Socks5代理方式的加密传输协议,也可以指实现这个协议的各种开发包.当前包使用Python.C.C++.C#.Go语 ...

  9. 历史性突破:使用 .net core 日处理消息量超过 1.7 万条!

    业余时间用 .net core 写了一个在线客服系统.并在博客园写了一个系列的文章,写介绍这个开发过程: .net core 和 WPF 开发升讯威在线客服系统:目录 https://blog.she ...

  10. 前端vue性能优化

    一:代码层次优化 1.1.v-if 和 v-show 区分使用场景 v-if 是 真正 的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建:也是惰性的:如果在初始渲染时 ...