docker启动gogs的git,并从本地windows里迁移数据到阿里云的ECS里

一、需求:
1、目前使用的是本地git,在windows上部署的gogs来管理开发代码。
2、需要迁移代码到阿里云的ECS服务器,并且可以通过web页面管理和TortoiseGit来拉取提交代码。

二、环境:
1、gogs在windows上安装,并存有原始代码
2、在阿里的ECS服务器上部署docker,并下载镜像gogs

三、步骤:
1、部署docker,登录ECS通过yum安装dokcer

yum -y install docker
systemctl  start docker
systemctl enable docker

2、下载gogs的docker镜像

docker search gogs
docker pull gogs/gogs
docker images

3、创建本地存储目录,以便docker映射存储到本地

mkdir /var/gogs    #也可以在其他目录下创建

4、启动镜像
备注:docker是依赖与firewalld的,所有firewall需要设置成宽松模式(命令行执行:firewall-cmd --set-default-zone=trusted)

docker run -d --name=gogs -p 10022:22 -p 10080:3000 -v /var/gogs:/data gogs/gogs
docker  ps     #显示当前运行的docker

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                            NAMES
9504e9b5e768        gogs/gogs           "/app/gogs/docker/st…"   4 weeks ago         Up 4 weeks          0.0.0.0:10022->22/tcp, 0.0.0.0:10080->3000/tcp   gogs

5、配置
在这里插入图片描述
管理用户可以随意设置,主要用于web页面登录
管理用
登录后创建一个测试的仓库
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
这里有git的下载地址
在这里插入图片描述
6、在windows电脑上安装部署TortoiseGit(安装流程这里省略,在网上搜索TortoiseGit的包直接双击安装即可)

在D盘下创建一个git的目录;
进到git目录鼠标右键会有“Git克隆”
在这里插入图片描述
在这里插入图片描述
输入gogs里的账号密码
在这里插入图片描述
在这里插入图片描述
拉取成功
在这里插入图片描述
注意的地方:如果输错账号密码,那TortoiseGit会拉取失败,这时需要到控制面板里找到“凭证管理器”里的删除掉gogs地址对应的普通凭证,再次“克隆”就会弹出输入用户密码对话框。
在这里插入图片描述
在这里插入图片描述

四、从windows上的gogs里迁移git数据到centos里的gogs。
备注:gogs的迁移命令
./gogs backup 备份

./gogs backup --help

 --config value, -c value   指定配置文件位置 path (default: "custom/conf/app.ini")
   --verbose, -v             查看过程
   --tempdir value, -t value  指定临时空间 (default: "/tmp")
   --target value             备份文件存储位置 (default: "./")
   --archive-name value        备份文件名字 (default: "gogs-backup-20200428143439.zip")
   --database-only            是否只迁移数据库
   --exclude-repos            不迁移那些仓库

./gogs restore 恢复

./gogs restore --help
OPTIONS:
   --config value, -c value   指定配置文件位置(default: "custom/conf/app.ini")
   --verbose, -v              查看过程
   --tempdir value, -t value  指定临时空间 (default: "/tmp")
   --from value               指定数据源(必须)
   --database-only            只迁移数据库文件
   --exclude-repos            不迁移那些仓库

1、在window里通过

gogs.exe backup     #全备份数据,会生成一个gogs-backup-20201218181801.zip的文件

2、拷贝备份的zip到centos里/var/gogs目录下

[root@iZ2 log]# cd /var/gogs/
[root@iZ2 gogs]# ls
git  gogs  gogs-backup-20201218181801.zip  ssh

3、进入docker,只恢复数据库

[root@iZ2 gogs]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                            NAMES
9504e9b5e768        gogs/gogs           "/app/gogs/docker/st…"   4 weeks ago         Up 4 weeks          0.0.0.0:10022->22/tcp, 0.0.0.0:10080->3000/tcp   gogs
[root@iZ2 gogs]# docker exec -it 95 /bin/bash      #进入到docker里
bash-5.0# cd /data/             #gogs的配置文件在此目录里的gogs/conf/下
bash-5.0# ls
git                             gogs                            gogs-backup-20201218181801.zip  ssh
bash-5.0# 
bash-5.0# su git           #需要切换为git用户,因为windows里是用git用户备份的gogs数据,用root用户会报错(如果不知道windows里用的什么用户可以去windows的gogs配置文件里查看)
bash-5.0$ cd /app/gogs/        #进入docker里只能在此目录才能用./gogs的命令
bash-5.0$  ls
data    docker  gogs    log
bash-5.0$  mkdir /data/tmp
bash-5.0$  cd /data/
bash-5.0$ mkdir tmp
bash-5.0$ ls
git         gogs    gogs-backup-20201218181801.zip  ssh     tmp
bash-5.0$  ./gogs restore --database-only --config /data/gogs/conf/app.ini --tempdir  /data/tmp  --from gogs-backup-20201218181801.zip

备注:
--config /data/gogs/conf/app.ini  指定导入仓库用到的配置文件,否则使用压缩包中的默认配置文件
--database-only   只导入数据库,这里我们只导入数据库的数据
--tempdir    指定一个临时空间,如果不指会在docker的根下创建,如果根的空间不够也会报错

4、迁移git数据

[root@iZ2 conf]# cd /var/gogs/gogs/conf/
[root@iZ2 conf]# ls
app.ini
[root@iZ2 conf]# vim app.ini

app.ini是web页面配置的gogs信息


BRAND_NAME = Gogs
RUN_USER   = git             
RUN_MODE   = prod

[database]
TYPE     = sqlite3                     #gogs使用的数据库
HOST     = 127.0.0.1:5432
NAME     = gogs
USER     = gogs
PASSWORD =
SSL_MODE = disable
PATH     = data/gogs.db           #gogs数据库文件存放位置

[repository]
ROOT = /data/git/gogs-repositories       #git数据存放的数据位置,在windows的配置文件里也有同样的配置。

[server]
DOMAIN           = http://47.108.16.11
HTTP_PORT        = 3000
EXTERNAL_URL     = http://http://47.108.16.11:10080/      #这里是登录web的公网地址,如果做了域名解析,这里也可以填写域名,项目里的http地址就会变成域名。
DISABLE_SSH      = false
SSH_PORT         = 10022
START_SSH_SERVER = false
OFFLINE_MODE     = false

[mailer]
ENABLED = false

[auth]
REQUIRE_EMAIL_CONFIRMATION  = false
DISABLE_REGISTRATION        = false
ENABLE_REGISTRATION_CAPTCHA = true
REQUIRE_SIGNIN_VIEW         = false

[user]
ENABLE_EMAIL_NOTIFICATION = false

[picture]
DISABLE_GRAVATAR        = false
ENABLE_FEDERATED_AVATAR = false

[session]
PROVIDER = file

[log]
MODE      = file

5、windows上找到gogs的配置文件app.ini查看git数据位置

[repository]
ROOT = D:/gitserver

把D盘的gitserver目录压缩为zip上传到centos服务器的/var/gogs/git/gogs-repositories目录下(centos里可以用unzip来解压zip包)

6、验证
登录web页面查看转移过来的创库代码

五、报错与排错

此为全量恢复(数据库和代码)没有指定临时存储空间,默认是在根目录里存储,因为是用docker启动的,所以空间不足,需要指定
[FATAL] [....io/gogs/internal/cmd/restore.go:58 runRestore()] Failed to extract backup archive: write /tmp/gogs-backup/repositories.zip: no space left on device

此为root用户恢复时会报gogs用户不对,需要切换为git用户
[FATAL] [gogs.io/gogs/gogs.go:40 main()] Failed to start application: init configuration: user configured to run Gogs is "git", but the current user is "root"

此为在/tmp下已经有gogs-backup目录,删除后再试即可
[FATAL] Failed to import 'custom': rename /tmp/gogs-backup/custom /data/gogs/gogs/custom: invalid cross-device link

此报错占时不知道原因,在用./gogs resore全量恢复时会报此错误,所以最后通过先daoru用户数据库数据,再拷贝windows下的gitserver数据的方式来迁移。
[FATAL] [....io/gogs/internal/cmd/restore.go:143 runRestore()] Failed to import 'data': rename /data/tmp/gogs-backup/data/attachments      /app/gogs/data/attachments: no such file or directory


其他报错:

1、在恢复的git数据里有数据,但在仓库里会报505
解决:在windows里查看gitserver里是否有快捷方式,如果有,只能把数据的实际路径目录拷贝下来,再删除gogs里的对应报505的仓库,重新创建上传。

2、可以拉取数据,但不能在web页面里的仓库看到,那是因为gogs-repositories里有对应的项目数据,可能是gogs代码问题,这种情况也只能删除仓库,重新创建上传。

3、如果配置了nginx反向代理,注意需要配置server里添加一行

client_max_body_size 1024m;       #主机是限制nginx上传单个文件大小的,默认100M
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值