gogs迁移

windows->linux

之前gogs放在windows server2016中,需要迁移至linux docker中。

首先拉取gogs镜像

docker pull gogs/gogs

然后挂载卷,运行docker容器。

docker run -p 3000:3000 --name gogs -v /mnt/gogs/data/:/data/gogs/data -v /mnt/gogs/cert/:/app/gogs/cert -v /mnt/gogs/public/:/app/gogs/public -v /mnt/gogs/scripts/:/app/gogs/scripts -v /mnt/gogs-repositories:/app/gogs/repositories -v /mnt/gogs/custom/conf/:/data/gogs/conf -d gogs/gogs

 其中/mnt/gogs目录是原windows server中放置gogs的磁盘目录,换为linux后挂载到了/mnt下。可替换为自己的gogs目录所在路径

挂载进docker 的目录只需要data public scripts custom/conf 和 仓库所在目录repositories,如果有ssl证书也需要挂载进去。

启动完毕后进入docker容器中修改配置文件

docker exec -it gogs /bin/bash
vi /data/gogs/conf/app.ini

 

 

批量替换所有仓库的配置路径

定位到仓库所在根目录。

find 查找update pre-receive和post-receive文件, sed替换掉gogs可执行程序和配置文件路径,替换格式为s#old#new#g,   old 和new是原字符串和新字符串,有特殊符号需要加\进行取消转义

 

替换gogs所在路径

find . -type f \( -name "update" -o -name "pre-receive" -o -name "post-receive" \) -exec sed -i s#D:\/gogs\/gogs\/gogs.exe#\/app\/gogs\/gogs#g {} \;

替换配置文件所在路径

find . -type f \( -name "update" -o -name "pre-receive" -o -name "post-receive" \) -exec sed -i s#D:\/gogs\/gogs\/custom\/conf\/app.ini#\\/data\/gogs\/conf\/app.ini#g {} \;

其中 D:\/gogs\/gogs\/gogs.exe 是gogs可执行程序在源本windows中的路径,/都加了\来取消转义。 即D:/gogs/gogs/gogs.exe

\/app\/gogs\/gogs 是gogs在docker目录中的路径,即 /app/gogs/gogs

 

修改完毕后执行./gogs web启动即可,然后就可以关掉终端接着访问gogs了。无缝迁移,完美。

PS: 从一台windows服务器迁移到另一台windows服务器也大同小异,

  1. 备份gogs目录和仓库目录,备份还原gogs数据库
  2. 修改配置文件中的各种目录路径
  3. 修改每个仓库中hooks目录下的update pre-receive和post-receive文件中关于gogs路径和配置文件路径
  4. 重启gogs服务

转载于:https://www.cnblogs.com/turingguo/p/10373793.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值