如何通过开源项目搭建私有云平台--第二步:部署代码仓库

第二步:部署代码仓库

代码仓库,除了用来管理代码外,还有一个很重要的用途,就是后面用于CI/CD的构建,本来想用gitlab,研究后发现免费版有仓库容量限制,只限2G,经过进一步调研决定使用gitea来作为代码仓库。安装步骤如下:

前提条件:已经在服务器部署docker,具体部署命令如下:

yum install -y yum-utils

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install docker-ce docker-ce-cli containerd.io -y

 如果报有冲突发生,利用下面命令删除冲突的组件

yum erase podman buildah -y

1、安装前准备,创建目录,用于容器挂载

在服务器 10.10.10.2 分别创建 /home/software/gitea/data和/home/software/gitea/config两个目录,然后授权这个两个目录chown 1000:1000 data config
 

2、用docker部署,具体运行如下命令

docker run -d --privileged=true --restart=always --name=gitea -p 3022:22 -p 3000:3000 -v /home/software/gitea/data:/data -v /home/software/gitea/config:/etc/gitea gitea/gitea


3、用浏览器访问,进行配置

访问 http://10.10.10.2:3000/ 打开配置页面,个人这里最好选择用sqlite3,方便后面一起备份,不用分开程序备份与数据库备份

4、备份代码仓库

前提条件:安装Minio命令行客户端,具体安装命令如下:

curl https://dl.min.io/client/mc/release/linux-amd64/mc -o /usr/local/sbin/mc  #下载命令行客户端

chmod 777   /usr/local/sbin/mc  #授权命令行客户端

mc alias set miniobackup https://10.10.10.1:9090  用户名 密码 --insecure

#建立Minio访问别名,https://10.10.10.1:9090 是Minio 接口地址,具体可以见第一步Minio安装命令

mc mb miniobackup/git-backup  --insecure

#建立专门用来保存备份的桶

建立备份脚本,输入下命令,

echo "Creating gitea backup inside docker containter ..."
docker exec -u git  -w /tmp $(docker ps -qf "name=gitea") bash -c '/app/gitea/gitea dump -c /data/gitea/conf/app.ini --file /tmp/gitea-dump.zip'

echo "Copying backup file from the container to the host machine ..."
docker cp $(docker ps -qf "name=gitea"):/tmp/gitea-dump.zip /tmp

echo "Removing backup file in container ..."
docker exec -u git -it -w /tmp $(docker ps -qf "name=gitea") bash -c 'rm /tmp/gitea-dump.zip'

echo "Renaming backup file ..."
BACKUPFILE=gitea-dump-$(date +"%Y%m%d%H%M").zip
mv /tmp/gitea-dump.zip /home/software/backup/gitea/$BACKUPFILE

echo "Backup file is available: "$BACKUPFILE

echo "Copy " $BACKUPFILE "to minio"

/usr/local/sbin/mc cp $BACKUPFILE miniobackup/git-backup --insecure

echo "Remove " $BACKUPFILE 
rm -f $BACKUPFILE

echo "Gitea backup Done."

注意标红文字:

1)name=gitea中的gitea是gitea容器的名称,具体见上面安装说明

2) mc一定要输入全路径,否则设定定时任务时会报找不到mc命令

3)将上述命令保存到一个sh里面,然后用crontab -e设定定时执行,例如:0 */12 * * *   sh /home/software/backup/gitea/backup.sh 每12小时执行一次

备份还原,尝试过按照gitea官方文档说的步骤不成功,最终通过多次尝试,总结如下步骤:

1)假设现在机器已经崩溃,之前gitea的数据全部丢失,先按照上面部署方法,用docker重新部署一个新的gitea

2)从Minio下载备份zip文件,通过如下命令,复制到新的gitea容器/tmp目录

     docker cp gitea-dump-202304071610.zip  gitea:/tmp

3)进入gitea容器,并解压备份zip文件

    docker exec -u root -it -w /tmp  gitea /bin/bash
    unzip gitea-dump-202304071610.zip

4)在gitea容器里面用备份文件替换新文件

     cp -rf data/* /data/gitea/
     cp -rf repos/*  /data/git/repositories/

5)在gitea容器里面重新授权git用户,这一步一定要做,否则gitea容器服务重启

     chown -R git:git /data

6)退出gitea容器,exit

7)用git用户重新登录gitea容器

       docker exec -u git -it  gitea /bin/bash

8)在gitea容器里面按照gitea文档重新运行初始化命令

      /usr/local/bin/gitea -c '/data/gitea/conf/app.ini' admin regenerate hooks

9)退出gitea容器,exit

10)重启gitea容器,docker restart gitea

11)通过浏览器访问,亲测能看到原来的数据


 


 

你可能感兴趣的:(私有云搭建与部署,docker,云计算,运维)