1、编写docker-compose.yml
找一个文件夹放docker-compose.yml,gitlab的映射文件最好放在数据盘
这里我放在vim /data/gitlab/ 下
gitlab:
image: 'gitlab/gitlab-ce:14.1.5-ce.0' ##镜像
restart: always ##设置重启
hostname: 'explore.com' ##设置你的host,用于nginx反向代理使用
ports:
- '80:80'
- '443:443'
volumes:
- '/data/gitlab/config:/etc/gitlab' ##配置文件夹
- '/data/gitlab/logs:/var/log/gitlab' ##日志文件及
- '/data/gitlab/data:/var/opt/gitlab' ##数据文件夹
2、docker启动gitlab
docker-compose up -d
3、备份操作
docker-compose -f /data/gitlab/docker-compose.yml exec -T web gitlab-backup create
4、还原备份
##备份文件放在/data/gitlab/data/backups下,脚本会找最新的备份文件还原
#!/bin/bash
set -e
echo "rsync begin - $(date)" > /data/time_cost.log
echo "prepare restore file begin - $(date)" >> /data/time_cost.log
FILE_NAME=$(ls -lt /data/gitlab/backups/ | grep '_gitlab_backup.tar' | head -n 1 | awk '{print $9}')
BACKUP_NAME=$( echo $FILE_NAME | sed -e "s/_gitlab_backup.tar//g")
if [ ! -f "/data/gitlab/data/backups/$FILE_NAME" ]; then
echo "/data/gitlab/data/backups/$FILE_NAME does not exist."
\cp -rf /data/git_backup/backups/${FILE_NAME} /data/gitlab/data/backups/
fi
echo "update permissions begin - $(date)" >> /data/time_cost.log
/usr/local/bin/docker-compose -f /data/docker-gitlab/docker-compose.yml exec -T web update-permissions
/usr/local/bin/docker-compose -f /data/docker-gitlab/docker-compose.yml exec -T web chown -R git.git /var/opt/gitlab/backups
echo "restore begin - $(date)" >> /data/time_cost.log
/usr/local/bin/docker-compose -f /data/docker-gitlab/docker-compose.yml exec -T web gitlab-ctl stop unicorn
/usr/local/bin/docker-compose -f /data/docker-gitlab/docker-compose.yml exec -T web gitlab-ctl stop sidekiq
/usr/local/bin/docker-compose -f /data/docker-gitlab/docker-compose.yml exec -T web gitlab-rake gitlab:backup:restore BACKUP=${BACKUP_NAME} force=yes
/usr/local/bin/docker-compose -f /data/docker-gitlab/docker-compose.yml exec -T web gitlab-ctl reconfigure
/usr/local/bin/docker-compose -f /data/docker-gitlab/docker-compose.yml exec -T web gitlab-ctl restart
/usr/local/bin/docker-compose -f /data/docker-gitlab/docker-compose.yml exec -T web gitlab-rake gitlab:check SANITIZE=true
echo "remove backup tar begin - $(date)" >> /data/time_cost.log
#rm -rf /data/gitlab/data/backups/*.tar
echo "end - $(date)" >> /data/time_cost.log