Docker에서 GitLab을 사용 중이며(컨테이너화를 좋아하기 때문에), Docker를 사용할 때 더 탄력적으로 느껴지고 필요하면 GitLab 환경을 어디로든 이동할 수 있기 때문에 정말 만족한다.

GitLab 백업은 모든 소스 코드와 Wiki, 어쩌면 소스 코드 이상을 보관하고 있기 때문에 정말 중요하며, 중요한 수준에서 실행 중인 서비스가 있다면 백업이 첫 번째로 해야 할 일이다.

Docker 컨테이너 이름 확인하기

다음 명령으로 GitLab을 Docker에서 실행한다:

[ercan@gitlab ~]$ docker run --detach \
  --hostname gitlab.ercanermis.com \
  --publish 443:443 --publish 80:80 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume /srv/gitlab/config:/etc/gitlab \
  --volume /srv/gitlab/logs:/var/log/gitlab \
  --volume /srv/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce:latest

백업하기

docker exec gitlab gitlab-rake gitlab:backup:create DIRECTORY=gitlab

또한 /srv/gitlab/config/ 경로에 있는 gitlab.rbgitlab-secrets.json 파일도 백업해야 한다.

자동화 스크립트

#!/bin/bash
#Author: Ercan Ermis - https://ercanermis.com

docker exec gitlab gitlab-rake gitlab:backup:create DIRECTORY=gitlab cp /srv/gitlab/config/gitlab.rb /srv/gitlab/data/backups/$(date +%F_%H-%M)gitlab.rb cp /srv/gitlab/config/gitlab-secrets.json /srv/gitlab/data/backups/$(date +%F%H-%M)_gitlab-secrets.json aws s3 sync /srv/gitlab/data/backups/ s3://ercanermis-backup/gitlab/ && rm -rf /srv/gitlab/data/backups/*

crontab을 사용하여 /opt/gitlab-backup.sh를 주기적으로 실행하도록 설정하면 된다.