docker 搭建gitlab 恢复和备份

最近一直在折腾gitlab 代码管理系统

采用docker搭建 镜像网址 https://hub.docker.com/

技术交流 http://idea.coderyj.com/

1.因为我要恢复的版本是12.0.9的所有我就下载了docker-ce的12.0.9的镜像

  • 1.下载镜像

    docker pull gitlab/gitlab-ce:12.0.9-ce.0

  • 2.安装

    docker run -itd -p 9980:80 -p 9922:22 -u root -v PWD/data/log:/var/log/gitlab -v PWD/data/opt:/var/opt/gitlab -v $PWD/data/etc:/etc/gitlab --privileged=true --name=gitlab --restart always gitlab/gitlab-ce:12.0.9-ce.0

    放在/data/gitlab 目录下面了 里面的子目录它会自己创建

    docker run -itd -p 9980:80 -p 9922:22 -u root -v /data/gitlab/log:/var/log/gitlab -v /data/gitlab/opt:/var/opt/gitlab -v /data/gitlab/etc:/etc/gitlab --privileged=true --name=gitlab --restart always gitlab/gitlab-ce:12.0.9-ce.0

  • 3.漫长等待大概3-5分钟后就能访问了

  • 查看状态

    docker exec gitlab gitlab-ctl status

  • 4.访问 输入 ip:9980 就OK了

2.恢复代码以及用户-准备3个文件 恢复的版本必须和安装的版本保持一致

1.数据库+代码文件 gitlab_backup.tar

2.配置文件 gitlab.rb

3.数据库秘钥,用于解密 gitlab-secrets.json

  • 1.将 gitlab._backup.tar 文件上传到 /data/gitlab/opt/backups 目录下

  • 2.将 gitlab.rb, gitlab-secrets.json 文件上传到 /data/gitlab/etc 目录下

  • 3.开始恢复

    进入容器

    docker exec -it gitlab /bin/bash

    关闭数据库连接

    gitlab-ctl stop unicorn
    gitlab-ctl stop sidekiq

    进入备份目录 /var/opt/gitlab/backups/

    cd /var/opt/gitlab/backups/

    开始恢复 注意文件名不要 后面的 gitlab这些

    gitlab-rake gitlab:backup:restore BACKUP=1703008988_2023_12_20_12.0.9

  • 1.漫长等待 中间输入 yes 覆盖就OK了

  • 2.修改配置文件

    cd /etc/gitlab
    vi gitlab.rb

    将 external_url 'http://0.0.0.0:80

    external_url 'http://0.0.0.0:80'

  • 4.恢复完成

3.备份

复制代码
# 进入容器
docker exec -it  gitlab   /bin/bash
# 备份命令
gitlab-rake gitlab:backup:create
# 备份目录
docker 内部目录 /var/opt/gitlab/backups
宿主机目录  /data/gitlab/opt/backups
# 复制docker内部文件到宿主机目录 这一步是挂在在宿主机上可以不操作
docker container  cp  容器:/var/opt/gitlab/backups/备份文件    /var/opt/gitlab/backups/

备份的时候不会备份 gitlab.rb, gitlab-secrets.json 需要我们手动保存

  • 备份脚本

    #! /bin/sh

    BEGIN INIT INFO

    Provides: gitlab_back.sh

    Required-start: local_fs remote_fs network syslog

    Required-Stop: local_fs remote_fs network syslog

    Default-Start: 2 3 4 5

    Default-Stop: 0 1 6

    Short-Description: starts the sql_back.sh daemon

    Description: starts sql_back.sh using start-stop-daemon

    END INIT INFO

    遇到错误就退出

    set -e
    docker exec gitlab /bin/bash -c "gitlab-rake gitlab:backup:create"

    path=/data/gitlab/opt/backups

    #删除100天之前的文件
    find $path -name "*.tar" -mtime +30 -exec rm {} ;

4.一键脚本 - 备用

复制代码
#安装docker
yum-config-manager --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce*
systemctl start docker
#下载gitlab images
docker pull gitlab/gitlab-ce:12.0.9-ce.0
#安装docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
#启动
#/usr/local/docker/gitlab  在此路径下放置docker-compose.yml
cd  /usr/local/docker/gitlab
docker-compose up -d
#恢复开始
docker exec  $(docker ps | grep gitlab/gitlab-ce:12.0.9-ce.0|awk '{print $1}')   /bin/bash  -c "
gitlab-ctl stop unicorn;\
gitlab-ctl stop sidekiq;\
gitlab-rake gitlab:backup:restore  force=yes  BACKUP=$(ls /var/opt/gitlab/backups/ |grep _gitlab |awk -F "_gitlab" '{print $1}');\
gitlab-ctl start;"
相关推荐
王老师青少年编程15 分钟前
csp信奥赛C++标准模板库STL(3):list的使用详解
c++·容器·stl·list·标准模板库·csp·信奥赛
一条懒鱼66620 分钟前
k8s-网络
网络·容器·kubernetes
是毛毛吧22 分钟前
开发环境配置指南:解决 GitHub 连接超时与依赖下载失败的问题
网络·git·网络安全·docker·信息与通信
morliz子轩1 小时前
在Docker上安装MYSQL 8.x—RelationalDb with SQL
sql·mysql·docker
huahailing10241 小时前
docker 部署 rustfs
运维·docker·容器
永不停歇的蜗牛2 小时前
K8S中Namespace(ns)、Pod、Service和ConfigMap(cm)四种重要的资源对象的关系
容器·贪心算法·kubernetes
sg_knight2 小时前
Docker Engine 升级指南:保障容器安全的关键步骤
java·spring boot·安全·spring·spring cloud·docker·容器
HaleyTiger2 小时前
Docker镜像导出导入常用命令:save与load
docker
知识分享小能手2 小时前
CentOS Stream 9入门学习教程,从入门到精通,CentOS Stream 9 的 Docker 容器 —— 语法详解与实战案例(16)
学习·docker·centos
kevin_水滴石穿2 小时前
Docker 健康检查(Healthcheck)
运维·docker·容器