본 문서는 GitLab 설치 시 사용했던 docker-compose 내용을 바탕으로 진행함.

GitLab 설치

우선 gitlab을 동작시키고 있다면 docker-compose down 명령어로 컨테이너를 종료시킨다.

(docker-compose.yml에 백업 설정을 추가로 해줘야 하기 때문)

아래 3라인을 추가한다.

# gitlab backup파일 저장 시간 2592000sec -> 30days
gitlab_rails['backup_keep_time'] = 2592000
gitlab_rails['backup_path'] = '/usr/local/backup'

변경된 docker-compose.yml 파일은 아래와 같다.

version: '3.9'

services:
  gitlab:
    image: "gitlab/gitlab-ce:latest"
    container_name: 'container_name'
    restart: always
    hostname: "gitlab.iasdf.com" # hostname
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url '<http://gitlab.iasdf.com>' # 외부 ip 혹은 접근할 ip
        # gitlab ssh port
        gitlab_rails['gitlab_shell_ssh_port'] = 22
        # gitlab backup파일 저장 시간 2592000sec -> 30days
        gitlab_rails['backup_keep_time'] = 2592000
        gitlab_rails['backup_path'] = '/usr/local/backup'
        # Add any other gitlab.rb configuration here, each on its own line
      TZ: 'Asia/Seoul'
    ports:
      - "80:80"   # http 접근포트
      - "443:443" # https 접근포트
      - "22:22" # ssh 접근포트
    volumes:
      - "/gitlab/config:/etc/gitlab"
      - "/gitlab/logs:/var/log/gitlab"
      - "/gitlab/data:/var/opt/gitlab"
      - "/mnt/gitlab_backup:/usr/local/backup"

docker-compose up -d 명령어를 통해 깃랩 컨테이너를 다시 실행시킨다.

gitlab 컨테이너 내부에서 gitlab-backup create 명령어를 통해 백업을 진행할 수 있다.

docker exec -it <container_name> bash
gitlab-backup create

# docker exec -t <container_name> gitlab-backup create 도 가능.

docker-compose.yml에서 설정한 backup_path 경로에 (timestamp 값)_(gitlab 버전)_gitlab_backup.tar 파일이 생성된다.

필자는 컨테이너의 backup_path를 호스트의 /mnt/gitlab_backup 으로