说明:下面命令中带有<your container name>字,是 gitlab 容器的名称,请按实际情况进行代替

在创建备份之前,你不需要停止任何东西

docker exec -t <your container name> gitlab-rake gitlab:backup:create

gitlab_backup.sh content:

#! /bin/bash
case "$1" in
start)
docker exec -t <your container name> gitlab-rake gitlab:backup:create
;;
esac

嘗試腳本是否可以正常運行

gitlab_backup.sh start

將腳本放入到 /root下,並使用 sudo crontab -e 添加一下內容

0 2 * * * /root/gitlab_backup.sh start

重啟cron服務

sudo service cron reload
sudo service cron restart

进入gitlab容器:

#来自Gitlab docker外的Ubuntu主机
sudo docker exec -it <your container name> /bin/bash

查看gitlab 本地的备份路径

gitlab_rails['backup_path'] 在 Gitlab 配置文件 gitlab.rb 是 注释的, 它的默认备份路径是在 /var/opt/gitlab/backups.

# 来自Gitlab Docker
root@bcc3d4829e2c:/# cat /etc/gitlab/gitlab.rb | grep backup_path
# gitlab_rails['manage_backup_path'] = true
# gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"

创建一份备份

检测备份

# 来自Gitlab Docker
root@bcc3d4829e2c:/etc/gitlab# ls -lart /var/opt/gitlab/backups
total 2777464
drwxr-xr-x 20 root root 4096 May 24 02:10 ..
drwx------ 2 git root 4096 May 24 02:15 .
-rw-r--r-- 1 root root 2844108800 May 24 02:18 1563732042_2019_07_21_11.1.4_gitlab_backup.tar

备份配置文件和 密钥文件

在上面创建备份时,没有备份 配置文件和密钥文件,这是因为上面一步是使用 使用密钥文件加密Gitlab 数据,如果你将他们保存相同的地方,你将会破坏加密过程。

所以请备份 /etc/gitlab/gitlab.rb/etc/gitlab/gitlab-secrets.json 并且将他们保存在一个其它Gitlab 备份数据的安全的地方

还原 Gitlab

你只能通过Gitlab 备份还原 一样的Gitlab版本和类型。并且你需要一个运行中的Gitlab实例。

停止一些 Gitlab 服务

# 来自Gitlab Docker

gitlab-ctl reconfigure
gitlab-ctl start
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-ctl status
ls -lart /var/opt/gitlab/backups

开始还原

备份文件一定可以在 定义在 Gitlab 配置文件/etc/gitlab/gitlab.rbgitlab_rails['backup_path']的路径下找到

在 docker 外主机终端执行

#来自Gitlab docker外的Ubuntu主机
docker exec -it <your container name> gitlab-rake gitlab:backup:restore --trace

还原过程中会出现2次 Do you want to continue (yes/no)? 的询问操作,都输入yes之后,按Enter 回车键确认操作。

我们当然添加 BACKUP 参数来指定备份文件如果有多个备份文件在备份目录下,BACKUP参数的值是 备份文件的时间戳,比如: docker exec -it <your container name> gitlab-rake gitlab:backup:restore BACKUP=1563732042_2019_07_21_11.1.4 --trace

重启Gitlab并安全检查

使用gitlabctl restart命令重启Gitlab服务

# 来自Gitlab Docker
gitlab-ctl restart

使用gitlab-rake gitlab:check SANITIZE=true命令来发起Gitlab安全检查

# 来自Gitlab Docker
gitlab-rake gitlab:check SANITIZE=true

使用docker ps来验证 Gitlab 容器健康

#来自Gitlab docker外的Ubuntu主机
sudo docker ps

重置root用戶密碼:

gitlab ce 官方文檔How to reset your root password

進入 docker 容器命令行內,執行

# Form Docker container /bin/bash
# 執行下面的命令啓動一個 Ruby on Rails console,等待 console加載完成
root@44b33d22e70f:/# gitlab-rails console production
-------------------------------------------------------------------------------------
GitLab: 11.1.4 (63daf37)
GitLab Shell: 7.1.4
postgresql: 9.6.8
-------------------------------------------------------------------------------------
Loading production environment (Rails 4.2.10)
irb(main):001:0> user = User.where(id: 1).first #這裏通過用戶id查詢用戶,也可以通過email或用戶名查詢
=> #<User id:1 @root>
irb(main):002:0> user.password="12345678" #設置密碼
=> "12345678"
irb(main):003:0> user.password_confirmation="12345678" #確認密碼
=> "12345678"
irb(main):004:0> user.save! # 保存修改
Enqueued ActionMailer::DeliveryJob (Job ID: 38850b0d-7690-47b7-b5c9-9cf975bae8fd) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", gid://gitlab/User/1
=> true
irb(main):005:0> quit #退出 Ruby on Rails console

參考

  1. docker部署的GitLab代码自动备份
  2. Backup and restore Omnibus GitLab configuration
  3. Backup and restore Gitlab in docker 需要参考这个来写自己的尝试笔记
  4. gitlab修改root密码

docker gitlab backup的更多相关文章

  1. docker gitlab迁移 备份 部署 搭建以及各种问题

    当前环境 服务器A 服务器B ubuntu docker gitlab(版本一致) docker安装gitlab 由于考虑到gitlab 包含了⾃身的nginx.数据库.端⼝占⽤等等因数,这⾥使⽤的是 ...

  2. docker gitlab

    Alternatively, you can manually launch the gitlab container and the supporting postgresql and redis ...

  3. docker+gitlab+gitlab-runner部署

    环境 服务端:centos7 客户端:window 在centos7上部署docker+gitlab+gitlab-runner,win10利用ssh连接,开发人员只需提交代码,就可以进行项目文件上传 ...

  4. docker+gitlab的安装和迁移

     docker+gitlab的安装 docker search gitlab docker pull docker.io/gitlab/gitlab-ce docker run --name=: -- ...

  5. 六、Docker+Gitlab

    原文:六.Docker+Gitlab (1)下载镜像: docker pull gitlab/gitlab-ce (2)运行镜像: GITLAB_HOME=`pwd`/data/gitlab dock ...

  6. Docker Gitlab CI 部署 Spring Boot 项目

    目前在学习这一块的内容,但是可能每个人环境都不同,导致找不到一篇博客能够完全操作下来没有错误的,所以自己也写一下,记录一下整个搭建的过程. Docker 的安装这里就不赘述了,基本上几行命令都可以了, ...

  7. Docker+GitLab+Jenkins+kubernetes实现DevOps 持续化集成和持续化部署概念图

    Docker+GitLab+Jenkins+kubernetes实现DevOps 持续化集成和持续化部署概念图 转载自:原创 IT综合 作者:百联达 时间:2017-05-09 15:48:08 41 ...

  8. docker gitlab,redmine,etc development enviroments

    sameersbn-gitlab is better more than officals sameersbn/redmine https://hub.docker.com/r/sameersbn/r ...

  9. docker gitlab安装

    mkdir -p /data/docker/volumes/gitlab chmod 777 /data/docker/volumes/gitlab cd /data/docker/volumes/g ...

随机推荐

  1. vps被封逃逸_v2+cloudflare+websocket+tls+nginx

    每逢重大节日,总有那么一大部分vps凉凉,以下为能正经正常使用vps,无奈之举,此法由于多层代理,夜间速度会有影响,白天感受不明显. 由于博客园内容审查,v2_ray 中间的 下划线为分隔符,相关链接 ...

  2. tcp - 传输控制协议 (TCP)

    总缆 SYNOPSIS #include <sys/socket.h> #include <netinet/in.h> tcp_socket = socket(PF_INET, ...

  3. swat - 基于web的samba管理工具

    总览 swat [ -s smb config file ] [ -a ] 描述 此程序是 samba 套件的一部分. swat 允许 samba 管理员通过web浏览器配置复杂的 smb.conf ...

  4. Linux解压rar文件

    Linux解压rar文件(unrar安装和使用,分卷解压) windows平台很多压缩文档为rar文件,那么怎么做到Linux解压rar文件(unrar安装和使用)? 简单,centos5安装unra ...

  5. java多线程面试题_线程并发面试题

    1.什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速.比如,如果一个线程完成一个 ...

  6. 解决Zookeeper报错:conf is not executed because it is not in the whitelist的解决办法

    1.echo wchp | nc localhost 2181 ,通过路径列出服务器 watch 的详细信息,且它会输出一个与 session 相关的路径.但是出现下面的错误. [root@xg61 ...

  7. nodejs 进阶:封装所有对数据库的常用操作

    //这个模块里面封装了所有对数据库的常用操作 var MongoClient = require('mongodb').MongoClient; var settings = require(&quo ...

  8. Thread.Join理解

    Thread.Join:Blocks the calling thread until a thread terminates MainThread里面起了一个SubThread,从SubThread ...

  9. JavaScript实现时间上一天和下一天切换

    JavaScript实现时间上一天和下一天切换 1.先获取时间戳毫秒数 var date = new Date()//实例化时间戳 var time = date.getTime()//获取当前毫秒数 ...

  10. 【JZOJ6433】【luoguP5664】【CSP-S2019】Emiya 家今天的饭

    description analysis 首先可以知道不符合要求的食材仅有一个,于是可以容斥拿总方案数减去选不合法食材的不合法方案数 枚举选取哪一个不合法食材,设\(f[i][j]\)表示到第\(i\ ...