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钩子->执行
版权声明:本文为zhangli_0790原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。