在2016年-2019年,SkywenCode技术团队使用码云Gitee 作为线上代码库管理,基于敏捷开发和持续构建的思路,我们整体基础建设以Drone / Jenkins + Docker 的方式构建和部署整个基础建设体系。
在接下来的时间里,SkywenCode技术团队基础建设系列会基于每一步的进展和采坑推出相应的教程,用于团队的经验总结回顾,以及分享和开放给有需要的团队或个人参考。
本篇主要介绍01 Gitea Docker 安装部署。
这里推荐用Daocloud 平台做镜像加速,或者其他加速平台,Docker 安装不做教程说明,默认以docker和docker composer安装好开始下一步。
从gitea官方文档,docker安装途径copy而来。
version: "2"
networks:
gitea://自定义网络 基于bridge驱动
external: false //禁止使用外部同名网络
services:
server:
image:
gitea/gitea:latest
environment:
- USER_UID=1000
- USER_GID=1000 //设置容器内部运行用户pid
- DB_TYPE=mysql
- DB_HOST=db:3306 //这里的服务指下面创建的db容器
- DB_NAME=gitea //相关的数据库名和密码无需修改,把这个db作为giteea专属数据库
- DB_USER=gitea
- DB_PASSWD=gitea
restart: always //重启策略
networks:
- gitea
volumes:
- ./gitea:/data //映射相关文件到容器的/data中
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000" //映射3000端口 用于web访问
- "222:22" //映射外部222端口到容器22端口,用于ssh连接
depends_on:
- db //依赖db服务
db:
image: mysql:5.7
restart: always
environment:
- MYSQL_ROOT_PASSWORD=gitea
- MYSQL_USER=gitea
- MYSQL_PASSWORD=gitea
- MYSQL_DATABASE=gitea
networks:
- gitea
volumes:
- ./mysql:/var/lib/mysql
1、在合适的位置创建文件夹,将其作为网站部署【本教程安装测试于windows环境下】
具体,如下截图:
当前部署的根目录为gitea.hiwilliam.cn,目录下仅有docker-compose.yml,内容为上面的compose文件配置。
$ docker-compose up -d //-d: 不显示部署过程的信息 done:说明部署完成
$ docker-compose ps //检查服务是否启动 up说明运行中 如果非up状态说明服务有问题,
//使用docker-compose up 命令输出过程信息来查看启动过程中出现的问题
dockers会自动根据compose 文件拉去所需要的镜像,例如本次教程的gitea本体镜像和依赖的mysql镜像。
【如果要停止拉取,快捷键ctrl+c】
部署完成:
docker-compose ps 检查服务运行状态:
docker-compose stop [container_name] //停止全部或者指定的服务
docker-compose rm [container_name] //删除全部或指定服务 *服务exit状态下
3、确认服务处于up状态下,浏览器访问 host:3000,或者配置好的域名,出现如下页面,说明gitea本地部署已完成,服务器部署过程相同。
1、点击登录、注册或者探索皆可,跳转到初始配置表单页面。
配置表单的数据库配置因为我们在compose 文件中都已设置好初始变量,所以这里不用做任何更改。尤其数据库的类型和主机因为docker 启动容器服务绑定的,改为其他值反而会出错。
2、下面的一般设置主要是关于gitea仓库的站点相关信息。
a. 站点名称根据自己喜好设置,而仓库根目录,LFS根目录,以用户名运行请保持默认不要改动。原因和数据库类型一样在服务部署时就已绑定。
b. ssh服务域名如果本地构建就保持默认,如果线上服务器则改为服务器公网ip地址,ssh服务端口请和compose文件中保持一致,
c. http服务端口也和compose文件保持一致。基本url如果本地默认或者设置好并绑定的虚拟域名,线上填写解析过的一个域名。
主要是设置用gitea仓库内容邮箱发送的基础配置,如若不用,可忽略。
为gitea仓库添加一个管理,不设置的话则默认第一个注册的账号为管理员账号。
至此,gitea相关配置完成,点击立即安装,即可完成安装。
除了安装过程的表单设置,我们还可以修改gitea的配置文件来修改gitea服务。具体地址:
gitea根目录/gitea/gitea/conf/app.ini
1、进入上面的路径的conf文件,复制app.ini文件,做好备份,万一玩崩了还能回来。至于可配置依旧是那个原则,凡是【目录和端口】的配置修改都要谨慎,尽量不要修改!这里贴出部分常用配置:
[server]
APP_DATA_PATH = /data/gitea
SSH_DOMAIN = localhost ssh连接ip地址
HTTP_PORT = 3000
ROOT_URL = http://localhost:3000/ 仓库代码基础url
DISABLE_SSH = false 禁止ssh访问,默认false
SSH_PORT = 22
SSH_LISTEN_PORT = 22
LFS_START_SERVER = true
LFS_CONTENT_PATH = /data/git/lfs
DOMAIN = localhost
LFS_JWT_SECRET = 4DmrnAN3fY7mR_HaLtm6x7WIXP3JWvAOs2rZFWEel7U
OFFLINE_MODE = false
# 注意数据库设置前,注意数据的备份
[database]
PATH = /data/gitea/gitea.db
DB_TYPE = mysql
# db指compose文件中db服务即mysql
HOST = db:3306
NAME = gitea
USER = gitea
PASSWD = gitea
SSL_MODE = disable
CHARSET = utf8
2、执行docker-compose restart
重启服务
这里注意:有时dockerc-compose构建目录有环境变量【.env文件】,所以最好是在项目的根目录执行docker-compose命令 ,例如本次部署gitea.hiwilliam.cn
为根目录。当然本次过程没有使用变量所以就无所谓了,只要不跳出根目录。
gitea的docker部署方式非常便捷,官方文档说明也非常详细,选择很多样,只要对docker的有基本的认知和了解都可以轻易上手。如果在部署途中失败或者其他问题,可以通过以下命令来解决。
docker-compose ps //查看服务运行状态
docker-compose up //部署服务并输出过程信息
docker-compose logs container_name // 打印指定容器运行日志
当然,仅仅简单如此部署是不适合生产的。尤其数据的存放,不仅仅是gitea容器映射的数据卷,还有gitea服务依赖的db服务-MySQL,为此可以考虑使用定时备份gitea映射的数据卷到oss,以及将本地依赖的db服务改为RDS。
除此之外如何将代码从旧的git仓库迁移到新部署的gitea仓库也是需要我们考虑实现的。
作者 / HiWilliam