GitLab代码库备份迁移
前言
由于公司之前的代码是搭建在分部的群晖docker上的,随着使用人数增多性能已无法满足需求,所以需要将代码库迁移到公司本部的专用服务器上。本文既为笔记,也为分享。
原环境信息:
新环境信息:
一台个人主机,系统为Ubuntu server 22.04 LTS
最小化安装并安装openssh和docker。
sameersbn/postgresql:12-20200524
sameersbn/redis:4.0.9-1
sameersbn/gitlab:13.12.2
这些容器都需要在新环境创建,版本也都要对应。
在gitlab实例的shell中运行备份命令
bundle exec rake gitlab:backup:create RAILS_ENV=production
需要在gitlab目录运行命令,等待备份成功后会在 /home/git/data/backups/
目录下生成 **_backup.tar
文件。
可以自己选择文件传输方法,我使用的scp传输。先传输到新机器上,后续还要将文件传到新机的docker中。
scp local_file remote_username@remote_host:remote_dir
命令使用自己的信息,输入远程主机的密码后等待传输完成即可!
docker pull sameersbn/postgresql:12-20200524
docker pull sameersbn/redis:4.0.9-1
docker pull sameersbn/gitlab:13.12.2
先部署psql和redis,最后安装gitlab,各参数信息需要和原机上的信息一致。
psql
docker run --name=synology_gitlab_postgresql -d -e 'DB_NAME=gitlab' -e 'DB_USER=gitlab_user' -e 'DB_PASS=gitlab_pass' -e 'DB_EXTENSION=pg_trgm,btree_gist' -v /mnt/d/docker/postgresql:/var/lib/postgresql sameersbn/postgresql:12-20200524
参数信息可以在原机上的docker信息中查询
redis
docker run --name=synology_gitlab_redis -d -e 'REDIS_USER=redis' sameersbn/redis:4.0.9-1
gitlab
docker run --name='synology_gitlab' -d --link synology_gitlab_redis:redisio -v /mnt/d/docker/gitlab/data:/home/git/data -p 30001:22 -p 30000:80 -e 'GITLAB_PORT=30000' -e 'GITLAB_SSH_PORT=30001' --link synology_gitlab_postgresql:db -e 'DB_ADAPTER=postgresql' -e 'DB_HOST=db' -e 'DB_PORT=5432' -e 'DB_NAME=gitlab' -e 'DB_USER=gitlab_user' -e 'DB_PASS=gitlab_pass' -e 'GITLAB_EMAIL=email***@test.com' -e 'GITLAB_BACKUPS=daily' -e 'GITLAB_HOST=*.*.*.*' -e 'GITLAB_SIGNUP=true' -e 'GITLAB_GRAVATAR_ENABLED=false' -e 'GITLAB_SECRETS_SECRET_KEY_BASE=**************' -e 'GITLAB_SECRETS_DB_KEY_BASE=**********' -e 'GITLAB_SECRETS_OTP_KEY_BASE=***********' -e 'SMTP_ENABLED=true' -e 'SMTP_DOMAIN=smtp.exmail.qq.com' -e 'SMTP_HOST=smtp.exmail.qq.com' -e 'SMTP_PORT=465' -e 'SMTP_USER=email***@test.com' -e 'SMTP_PASS=********' sameersbn/gitlab:13.12.2
带*的是必须修改的:GITLAB_HOST为目标机的内网地址;GITLAB_EMAIL为发送邮件的发送者;KEY信息在原docker上有,可以按原docker信息复制;端口映射的信息可以按需修改;参数格式为 -e '参数'
,有不需要的参数可以自行删除
测试gitlab是否部署成功,在浏览器打开 gitlab_ip:30000
,如果能显示就成功了。
显示gitlab 502也是正常的,因为服务没有完全启动时就会显示502,等服务完全启动后就会显示设置管理员密码,但是不用配置信息,直接开始还原就行。
先将备份文件从宿主机拷贝到gitlab容器中的 /home/git/data/backups/
目录中。
docker cp 备份文件 container_name:/home/git/data/backups/
使用docker ps 查看容器名
文件拷贝到 backups
目录后,进入 /home/git/gitlab
目录,使用命令进行还原
bundle exec rake gitlab:backup:restore RAILS_ENV=production
耐心等待还原,出现下图既为成功。
访问 gitlab_ip:30000
,此时会显示用户登录页面,而不是设置管理密码的页面。
有固定公网IP可以直接端口映射;没有固定公网IP可以使用阿里或腾讯的ddns。
如果没有公网IP可以租一台带公网IP的云服务器,配置内网穿透;或者直接使用内网穿透厂商的穿透服务。
如果需要配置外网访问的文档,可以评论或者私信我,需要的人多的话我会专门写一篇外网访问的文档。