1、备份gogs仓库,拷贝到新的服务器:

tar -zcvf gogs-repositories.tar.gz gogs-repositories

2、备份gogs数据库

sudo mysqldump -h localhost -u gogs -P 3306 --no-tablespaces -p gogs> /home/tgubuntu/gogs.sql

3、新服务器安装MySQL容器

# 创建docker网络,使用bridge
sudo docker network create -d bridge --subnet '172.21.0.1/24' --gateway '172.21.0.1' gogs-bridge
# 安装MySQL容器
docker run \
-d -it \
-p 8012:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
--privileged=true \
--network gogs-bridge \
--ip 172.21.0.2 \
--name mysql \
gogs_mysql

4、进入MySQL容器,创建账户,授权

sudo docker exec -it gogs_mysql bash
mysql -u root -p
use mysql;

# 创建gogs用户
CREATE USER 'gogs'@'%' IDENTIFIED BY '123456789';
# CREATE USER 'gogs'@'172.21.0.1' IDENTIFIED BY '123456789';
# 授权gogs用户可以操作gogs库下所有表
GRANT ALL PRIVILEGES ON gogs.* TO 'gogs'@'%' WITH GRANT OPTION;
# GRANT ALL PRIVILEGES ON gogs.* TO 'gogs'@'172.21.0.1' WITH GRANT OPTION;
# 授权远程三方工具连接MySQL
ALTER USER 'gogs'@'%' IDENTIFIED WITH mysql_native_password BY '123456789';
# ALTER USER 'gogs'@'172.21.0.1' IDENTIFIED WITH mysql_native_password BY '123456789';
# 刷新授权
FLUSH PRIVILEGES;
# 创建gogs库
CREATE DATABASE `gogs` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';

还原数据库

 use gogs
 source /home/git/gogs.sql

5、创建git用户运行Gogs

sudo adduser git
sudo su git

修改目录的所属权为git

sudo chown -R git:git /home/git/gogs 
sudo chown -R git:git /home/git/gogs-repositories 

6、创建Gogs容器

sudo docker run \
-itd \
-p 8013:22 \
-p 8014:3000 \
-v /home/git/gogs/data:/data/gogs/data \	# 挂载数据目录
-v /home/git/gogs/conf:/data/gogs/conf \	# 挂载配置
-v /home/git/gogs/log:/data/gogs/log \		# 挂载日志目录
-v /home/git/gogs-repositories:/data/git/gogs-repositories \	# 挂载代码仓库,重要,否则会出现仓库500
--privileged=true \
--network gogs-bridge \
--ip 172.21.0.3 \
--name=gogs \
gogs/gogs

7、浏览器运行安装程序,xxx.xxx.xx.xx:8014

在这里插入图片描述

8、备份的gogs-repositories文件上传到新服务器,替换gogs-repositories

9、重启gogs容器

sudo docker restart gogs

10、迁移后会出现不能push的现象,报错pre-receive找不到,使用Gogs管理员账号登录Gogs,刷新hooks

管理面板->控制面板->管理员操作->重新同步所有仓库的pre-receive、update和post-receive钩子->执行

更多推荐