gitlab遷移到docker中

gitlab-rake gitlab:env:info  查看當前的版本

gitlab-rake gitlab:backup:create RAILS_ENV=production   備份數據 記錄備份的文件.tar

安裝docker

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

yum install -y yum-utils device-mapper-persistent-data lvm2

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  

yum -y install docker-ce

service docker start  啓動服務

建立gitlab用的目錄

mkdir -p /opt/gitlab

mkdir -p /opt/gitlab/config

mkdir -p /opt/gitlab/data

mkdir -p /opt/gitlab/logs

mkdir -p /opt/gitlab/ssl  證書這個目錄下面要在啓動前生成出來

mkdir -p /opt/gitlab/docker

下面啓動gitlab

docker run --detach \
    --hostname gitlab \
    --env GITLAB_OMNIBUS_CONFIG="external_url 'https://ip:自己的端口/';
                                 gitlab_rails['gitlab_shell_ssh_port'] = '端口就是頁面上線上ssh的那個端口';
                                 gitlab_rails['gitlab_email_from'] = '[email protected]';
                                 gitlab_rails['smtp_enable'] = true
                                 gitlab_rails['smtp_address'] = 'smtp.exmail.qq.com'
                                 gitlab_rails['smtp_port'] = 465
                                 gitlab_rails['smtp_user_name'] = '[email protected]'
                                 gitlab_rails['smtp_password'] = '1234'
                                 gitlab_rails['smtp_domain'] = 'qq.com'
                                 gitlab_rails['smtp_authentication'] = 'login'
                                 gitlab_rails['smtp_enable_starttls_auto'] = true
                                 gitlab_rails['smtp_tls'] = true
                                 postgresql['enable'] = true
                                 nginx['redirect_http_to_https'] = false
                                 nginx['ssl_certificate'] = '/etc/gitlab/ssl/xx.crt'
                                 nginx['ssl_certificate_key'] = '/etc/gitlab/ssl/xx.key'  
                                 nginx['listen_port'] = 443
                                " \
    --publish 你自己的端口:443 \    #這個端口就是web訪問那個
    --publish ssh那個端口:22 \        #自己的ssh端口因爲物理機已經用了22了這個換一個必須
    --name gitlab \
    --restart always \
    --volume /opt/gitlab/config:/etc/gitlab \
    --volume /opt/gitlab/ssl:/etc/gitlab/ssl \
    --volume /opt/gitlab/logs:/var/log/gitlab \
    --volume /opt/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce:xxx你的版本-ce.0

把備份放到目錄裏面

mv 備份的.tar /opt/gitlab/data/backup裏面

docker exec -it gitlab /bin/bash  進入docker

gitlab-rake gitlab:backup:restore RAILS_ENV=production BACKUP=xxxx 恢復你的數據

訪問倉庫看看報500錯誤

https://gitlab.com/gitlab-org/gitlab-ce/issues/21564

https://www.oschina.net/question/2946511_2200445

是gitlab數據遷移時的一個缺陷。解決方法

1、覆蓋原來gitlab的 db_key_base 到新的gitlab 

db_key_base  位置在 /etc/gitlab/gitlab-secrets.json  

2、EE版本執行
 gitlab-rails runner "Project.where(mirror: false).where.not(import_url: nil).each { |p| p.import_data.destroy if p.import_data }"

CE版本執行
 gitlab-rails runner "Project.where.not(import_url: nil).each { |p| p.import_data.destroy if p.import_data }"

參考https://gitlab.com/gitlab-org/gitlab-ce/issues/17873

備份

就是定時的備份/opt/gitlab目錄

tar -zcPf /備份到的目錄/gitlab`date +%Y%m%d`.tar.gz ] /opt/gitlab
find /備份的目錄/ -mtime +7 -type f -name gitlab*.tar.gz -exec rm -rf {} \;  # -mtime +n : 列出在n天之前(不含n天本身)被更改過內容的文件名


上面的備份方式簡單,但是正規的應該這樣備份的  ,但是這個配置不會備份 /opt/gitlab/config  就是docker裏面的/etc/gitlab 證書目錄 這些都不會備份需要手動恢復,只會備份數據這個命令

/etc/gitlab/gitlab.rb 配置文件須備份

/var/opt/gitlab/nginx/conf nginx配置文件

/etc/postfix/main.cfpostfix 郵件配置備份

gitlab-rake gitlab:backup:create 這個是gitlab專用的備份命令 可以自行百度查詢,或者看我之前的文章
docker exec gitlab /bin/bash -c 'gitlab-rake gitlab:backup:create'  >> /gitlab/backup.log定時執行這個就行   可以看輸出的內容
Creating backup archive: 1587623708_2020_04_23_gitlab_backup.tar ... done  這個就是備份完成了
備份目錄在 /opt/gitlab/data/backups 這個目錄也能修改默認這個。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章