Docker를 사용하여 GitLab 설치

Tier: Free, Premium, Ultimate Offering: Self-Managed

GitLab Docker 이미지는 모노리식 이미지로, 모든 필요한 서비스를 단일 컨테이너에서 실행하는 GitLab의 이미지입니다.

다음에서 GitLab 공식 Docker 이미지를 찾을 수 있습니다:

Docker 이미지에는 메일 전송 에이전트(MTA)가 포함되어 있지 않습니다. 권장하는 해결책은 별도의 컨테이너에서 실행되는 MTA(예: Postfix 또는 Sendmail)를 추가하는 것입니다. 또 다른 옵션으로는 GitLab 컨테이너에 직접 MTA를 설치할 수 있지만, 이렇게 하면 업그레이드나 재부팅 후에 MTA를 다시 설치해야 하는 유지 관리 오버헤드가 추가됩니다.

GitLab Docker 이미지를 Kubernetes에 배포하지 말아야 하며, 이는 단일 장애 지점을 생성합니다. Kubernetes에 GitLab을 배포하려면 GitLab Helm 차트 또는 GitLab Operator를 대신 사용해야 합니다.

caution
Windows용 Docker는 공식적으로 지원되지 않습니다. 볼륨 권한과 잠재적으로 다른 문제가 알려져 있습니다. Windows용 Docker에서 실행하려는 경우 도움말 페이지를 참조하여 커뮤니티 리소스(예: IRC 또는 포럼)에 도움을 요청하세요.

전제 조건

GitLab Docker 이미지를 사용하려면 다음이 필요합니다:

  • Docker 설치.
  • 유효한 외부 접근 가능한 호스트 이름을 사용해야 합니다. localhost를 사용하지 마세요.

SSH 포트 구성

GitLab은 Git과의 상호 작용을 위해 SSH를 사용합니다. 기본적으로 GitLab은 포트 22를 사용합니다.

GitLab Docker 이미지를 사용할 때 다른 포트를 사용하려면 다음 중 하나를 사용할 수 있습니다:

  • 서버의 SSH 포트를 변경합니다 (권장).
  • GitLab Shell SSH 포트를 변경합니다.

서버의 SSH 포트 변경

서버의 SSH 포트를 변경하면 GitLab에서 추가적인 SSH 구성 변경 없이 서버의 SSH 포트를 변경할 수 있습니다. 이 경우 SSH 클론 URL은 다음과 같이 보입니다: ssh://git@gitlab.example.com/user/project.git.

서버의 SSH 포트를 변경하려면 다음을 수행합니다:

  1. 에디터로 /etc/ssh/sshd_config를 열고 SSH 포트를 변경합니다:

    Port = 2424
    
  2. 파일을 저장하고 SSH 서비스를 다시 시작합니다:

    sudo systemctl restart ssh
    
  3. 새 터미널 세션을 열고 새로운 포트를 사용하여 서버에 SSH로 연결할 수 있는지 확인하세요.

GitLab Shell SSH 포트 변경

서버의 기본 SSH 포트를 변경하고 싶지 않은 경우, GitLab이 Git over SSH 푸시에 사용하는 다른 SSH 포트를 구성할 수 있습니다. 이 경우 SSH 클론 URL은 다음과 같이 보입니다: ssh://git@gitlab.example.com:<portNumber>/user/project.git.

자세한 정보는 GitLab Shell SSH 포트 변경을 참조하세요.

볼륨 위치 설정

나머지 모든 것을 설정하기 전에, 구성, 로그 및 데이터 파일이 위치할 디렉터리를 생성합니다. 사용자의 홈 디렉터리 하위(예: ~/gitlab-docker)나 /srv/gitlab과 같은 디렉터리에 위치할 수 있습니다. 해당 디렉터리를 만들려면 다음을 실행하세요:

sudo mkdir -p /srv/gitlab

사용자가 root가 아닌 다른 사용자로 Docker를 실행하는 경우, 해당 디렉터리에 적절한 권한이 부여되었는지 확인하세요.

생성한 디렉터리의 경로를 설정하는 새로운 환경 변수 $GITLAB_HOME을 구성합니다:

export GITLAB_HOME=/srv/gitlab

GITLAB_HOME 환경 변수를 쉘의 프로필에 추가하여 모든 터미널 세션에 적용할 수도 있습니다:

  • Bash: ~/.bash_profile
  • ZSH: ~/.zshrc

GitLab 컨테이너는 지속적인 데이터를 저장하기 위해 호스트 마운트된 볼륨을 사용합니다:

로컬 위치 컨테이너 위치 용도
$GITLAB_HOME/data /var/opt/gitlab 애플리케이션 데이터 저장
$GITLAB_HOME/logs /var/log/gitlab 로그 저장
$GITLAB_HOME/config /etc/gitlab GitLab 구성 파일 저장

사용할 GitLab 버전 및 에디션 찾기

운영 환경에서는 배포를 특정 GitLab 버전에 고정해야 합니다. Docker 태그 페이지에서 사용할 버전을 찾으세요:

태그 이름은 다음과 같은 구성으로 이루어져 있습니다:

gitlab/gitlab-ee:<version>-ee.0

여기서 <version>은 GitLab 버전을 나타내며, 예를 들어 16.5.3입니다. 이는 항상 이름에 <major>.<minor>.<patch>를 포함합니다.

테스트 목적으로는 gitlab/gitlab-ee:latest와 같이 latest 태그를 사용할 수 있습니다. 이는 최신 안정적인 릴리스를 가리킵니다.

다음 예제에서는 안정적인 Enterprise Edition 버전을 사용하지만, 릴리스 후보(RC) 또는 nightly 이미지를 사용하려면 각각 gitlab/gitlab-ee:rc 또는 gitlab/gitlab-ee:nightly를 사용하세요.

Community Edition을 설치하려면 ee 대신 ce를 사용하세요.

설치

GitLab Docker 이미지는 여러 가지 방법으로 실행할 수 있습니다:

Docker Engine을 사용하여 GitLab 설치

이 디렉터리를 여러분의 요구 사항에 맞게 조정할 수 있습니다. GITLAB_HOME 변수를 설정한 후 이미지를 실행할 수 있습니다:

sudo docker run --detach \
  --hostname gitlab.example.com \
  --env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com'" \
  --publish 443:443 --publish 80:80 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ee:<version>-ee.0

이 명령은 GitLab 컨테이너를 다운로드하고 시작하며, SSH, HTTP 및 HTTPS에 접근하기 위해 필요한 포트를 공개합니다. 모든 GitLab 데이터는 $GITLAB_HOME의 하위 디렉터리에 저장됩니다. 컨테이너는 시스템 재부팅 후에 자동으로 다시 시작됩니다.

SELinux를 사용하는 경우 다음과 같이 실행하세요:

sudo docker run --detach \
  --hostname gitlab.example.com \
  --env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com'" \
  --publish 443:443 --publish 80:80 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab:Z \
  --volume $GITLAB_HOME/logs:/var/log/gitlab:Z \
  --volume $GITLAB_HOME/data:/var/opt/gitlab:Z \
  --shm-size 256m \
  gitlab/gitlab-ee:<version>-ee.0

이 명령은 Docker 프로세스가 마운트된 볼륨에 구성 파일을 만드는 데 충분한 권한이 있는지 확인합니다.

커버로스 통합을 사용하는 경우, 커버로스 포트도 (예: --publish 8443:8443)를 공개해야 합니다. 이를 하지 않으면 커버로스와 관련된 Git 작업이 실패합니다.

초기화 프로세스에는 오랜 시간이 걸릴 수 있습니다. 이 프로세스를 다음과 같이 추적할 수 있습니다:

sudo docker logs -f gitlab

컨테이너를 시작한 후 gitlab.example.com을 방문하고, 다음 명령에서 사용자 이름 root와 비밀번호로 로그인할 수 있습니다:

sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
note
비밀번호 파일은 24시간 후 첫 컨테이너 재시작 시 자동으로 삭제됩니다.

Docker Compose를 사용하여 GitLab 설치

Docker Compose를 사용하면 Docker 기반의 GitLab 설치를 손쉽게 구성, 설치 및 업그레이드할 수 있습니다.

  1. Docker Compose 설치하기.
  2. docker-compose.yml 파일을 생성하세요:

    version: '3.6'
    services:
      gitlab:
        image: gitlab/gitlab-ee:<version>-ee.0
        container_name: gitlab
        restart: always
        hostname: 'gitlab.example.com'
        environment:
          GITLAB_OMNIBUS_CONFIG: |
            # 여기에 다른 gitlab.rb 설정을 각각 한 줄씩 추가하세요
            external_url 'https://gitlab.example.com'
        ports:
          - '80:80'
          - '443:443'
          - '22:22'
        volumes:
          - '$GITLAB_HOME/config:/etc/gitlab'
          - '$GITLAB_HOME/logs:/var/log/gitlab'
          - '$GITLAB_HOME/data:/var/opt/gitlab'
        shm_size: '256m'
    
  3. docker-compose.yml 파일이 있는 디렉터리에 있음을 확인하고 GitLab을 시작하세요:

    docker compose up -d
    
note
GITLAB_OMNIBUS_CONFIG 변수가 작동하는 방법은 Docker 컨테이너 사전 구성 섹션을 참조하세요.

아래는 사용자 지정 HTTP 및 SSH 포트에서 실행되는 GitLab의 다른 docker-compose.yml 예제입니다. GITLAB_OMNIBUS_CONFIG 변수가 ports 섹션과 일치하는지에 주목하세요:

version: '3.6'
services:
  gitlab:
    image: gitlab/gitlab-ee:<version>-ee.0
    container_name: gitlab
    restart: always
    hostname: 'gitlab.example.com'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://gitlab.example.com:8929'
        gitlab_rails['gitlab_shell_ssh_port'] = 2424
    ports:
      - '8929:8929'
      - '443:443'
      - '2424:2424'
    volumes:
      - '$GITLAB_HOME/config:/etc/gitlab'
      - '$GITLAB_HOME/logs:/var/log/gitlab'
      - '$GITLAB_HOME/data:/var/opt/gitlab'
    shm_size: '256m'

이 구성은 --publish 8929:8929 --publish 2424:2424를 사용하는 것과 동일합니다.

Docker 스웜 모드를 사용하여 GitLab 설치

Docker 스웜 모드를 사용하면 스웜 클러스터에서 Docker 기반의 GitLab 설치를 손쉽게 구성 및 배포할 수 있습니다.

스웜 모드에서는 Docker secretsDocker configurations을 활용하여 GitLab 인스턴스를 효율적으로 및 안전하게 배포할 수 있습니다. Secrets를 사용하여 초기 루트 암호를 환경 변수로 노출시키지 않고 안전하게 전달할 수 있습니다. Configurations을 사용하여 GitLab 이미지를 가능한 한 범용적으로 유지할 수 있습니다.

다음은 시크릿 및 구성을 사용하는 stack으로 네 개의 러너와 함께 GitLab을 배포하는 예시입니다:

  1. Docker 스웜 설정을 수행하세요.
  2. docker-compose.yml 파일을 생성하세요:

    version: "3.6"
    services:
      gitlab:
        image: gitlab/gitlab-ee:<version>-ee.0
        container_name: gitlab
        restart: always
        hostname: 'gitlab.example.com'
        ports:
          - "22:22"
          - "80:80"
          - "443:443"
        volumes:
          - $GITLAB_HOME/data:/var/opt/gitlab
          - $GITLAB_HOME/logs:/var/log/gitlab
          - $GITLAB_HOME/config:/etc/gitlab
        shm_size: '256m'
        environment:
          GITLAB_OMNIBUS_CONFIG: "from_file('/omnibus_config.rb')"
        configs:
          - source: gitlab
            target: /omnibus_config.rb
        secrets:
          - gitlab_root_password
      gitlab-runner:
        image: gitlab/gitlab-runner:alpine
        deploy:
          mode: replicated
          replicas: 4
        configs:
          gitlab:
            file: ./gitlab.rb
        secrets:
          gitlab_root_password:
            file: ./root_password.txt
    

    간편함을 위해 network 구성은 생략되었습니다. 자세한 정보는 공식 Compose 파일 참조에서 확인할 수 있습니다.

  3. gitlab.rb 파일을 생성하세요:

    external_url 'https://my.domain.com/'
    gitlab_rails['initial_root_password'] = File.read('/run/secrets/gitlab_root_password').gsub("\n", "")
    
  4. 암호를 포함하는 root_password.txt 파일을 생성하세요:

    MySuperSecretAndSecurePassw0rd!
    
  5. docker-compose.yml 파일이 있는 디렉터리에 있음을 확인하고 다음을 실행하세요:

    docker stack deploy --compose-file docker-compose.yml mystack
    

설정

이 컨테이너는 공식 Linux 패키지를 사용하므로 모든 설정은 고유한 /etc/gitlab/gitlab.rb 구성 파일에서 수행됩니다.

GitLab 구성 파일에 액세스하려면 실행 중인 컨테이너의 쉘 세션을 시작할 수 있습니다. 이를 통해 모든 디렉터리를 탐색하고 원하는 텍스트 편집기를 사용할 수 있습니다:

sudo docker exec -it gitlab /bin/bash

또는 /etc/gitlab/gitlab.rb를 직접 편집할 수도 있습니다:

sudo docker exec -it gitlab editor /etc/gitlab/gitlab.rb

/etc/gitlab/gitlab.rb를 열면 external_url을 유효한 URL로 설정해야 합니다.

GitLab에서 이메일을 받으려면 SMTP 설정을 구성해야 합니다. 왜냐하면 GitLab Docker 이미지에는 SMTP 서버가 설치되어 있지 않기 때문입니다. 또한 HTTPS 활성화에 관심이 있을 수 있습니다.

모든 원하는 변경 사항을 적용한 후 GitLab을 다시 구성하려면 컨테이너를 다시 시작해야 합니다:

sudo docker restart gitlab

GitLab은 컨테이너 시작할 때마다 자체적으로 다시 구성됩니다. GitLab의 구성에 대한 자세한 옵션은 구성 문서를 확인하세요.

Docker 컨테이너 사전 구성

Docker run 명령에 환경 변수 GITLAB_OMNIBUS_CONFIG를 추가하여 GitLab Docker 이미지를 사전 구성할 수 있습니다. 이 변수에는 gitlab.rb 설정을 포함할 수 있으며, 컨테이너의 gitlab.rb 파일이 로드되기 전에 계산됩니다. 이 동작을 통해 외부 GitLab URL을 구성하고 데이터베이스 구성 또는 Linux 패키지 템플릿의 다른 옵션을 설정할 수 있습니다. GITLAB_OMNIBUS_CONFIG에 포함된 설정은 gitlab.rb 구성 파일에 작성되지 않고 로드될 때 계산됩니다. 여러 설정을 제공하려면 세미콜론(;)으로 구분하세요.

다음은 외부 URL 설정, LFS 활성화 및 Prometheus에 필요한 최소한의 shm 크기로 컨테이너를 시작하는 예시입니다:

sudo docker run --detach \
  --hostname gitlab.example.com \
  --env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com'; gitlab_rails['lfs_enabled'] = true;" \
  --publish 443:443 --publish 80:80 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ee:<version>-ee.0

매번 docker run 명령을 실행할 때마다 GITLAB_OMNIBUS_CONFIG 옵션을 제공해야 합니다. GITLAB_OMNIBUS_CONFIG의 내용은 연속적인 실행 간에 유지되지 않습니다.

공용 IP 주소에서 GitLab 실행

--publish 플래그를 수정하여 Docker가 IP 주소를 사용하고 모든 트래픽을 GitLab 컨테이너로 전달하도록 할 수 있습니다.

GitLab을 IP 198.51.100.1에서 노출하려면:

sudo docker run --detach \
  --hostname gitlab.example.com \
  --env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com'" \
  --publish 198.51.100.1:443:443 \
  --publish 198.51.100.1:80:80 \
  --publish 198.51.100.1:22:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ee:<version>-ee.0

그럼 이제 GitLab 인스턴스에 http://198.51.100.1/https://198.51.100.1/로 액세스할 수 있습니다.

다른 포트에서 GitLab 노출

컨테이너 내부에서 일부 포트 를 사용합니다.

80 (HTTP), 443 (HTTPS), 또는 22 (SSH)와 다른 호스트 포트를 사용하려면 docker run 명령에 별도의 --publish 지시문을 추가해야 합니다.

예를 들어, 웹 인터페이스를 호스트의 포트 8929로 노출하고 SSH 서비스를 포트 2424로 노출하려면:

  1. 다음 docker run 명령을 사용합니다:

    sudo docker run --detach \
      --hostname gitlab.example.com \
      --env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.example.com:8929'; gitlab_rails['gitlab_shell_ssh_port'] = 2424" \
      --publish 8929:8929 --publish 2424:2424 \
      --name gitlab \
      --restart always \
      --volume $GITLAB_HOME/config:/etc/gitlab \
      --volume $GITLAB_HOME/logs:/var/log/gitlab \
      --volume $GITLAB_HOME/data:/var/opt/gitlab \
      --shm-size 256m \
      gitlab/gitlab-ee:<version>-ee.0
    
    note
    포트를 노출하는 형식은 호스트포트:컨테이너포트입니다. 더 많은 정보는 들어오는 포트 노출에서 Docker 문서를 참조하세요.
  2. 실행 중인 컨테이너에 입력합니다:

    sudo docker exec -it gitlab /bin/bash
    
  3. 에디터로 /etc/gitlab/gitlab.rb를 열고 external_url을 설정합니다:

    # HTTP
    external_url "http://gitlab.example.com:8929"
       
    또는
       
    # HTTPS (https에 주목하세요)
    external_url "https://gitlab.example.com:8929"
    

    이 URL에 지정된 포트는 Docker에 의해 호스트로 게시된 포트와 일치해야 합니다. 추가로, 만약 NGINX의 listen 포트가 명시적으로 설정되지 않았다면 nginx['listen_port']에서 가져올 것입니다. 자세한 내용은 NGINX 문서를 참조하세요.

  4. SSH 포트를 설정합니다:

    gitlab_rails['gitlab_shell_ssh_port'] = 2424
    
  5. 마지막으로 GitLab을 다시 구성합니다:

    gitlab-ctl reconfigure
    

위 예제를 따라하면 웹 브라우저에서 <호스트IP>:8929로 GitLab에 액세스하고 SSH를 이용하여 2289 포트에서 푸시할 수 있습니다.

다른 포트를 사용하는 docker-compose.yml 예제는 Docker compose 섹션에서 찾을 수 있습니다.

다중 데이터베이스 연결 구성

GitLab 16.0에서, GitLab은 동일한 PostgreSQL 데이터베이스를 가리키는 두 개의 데이터베이스 연결을 기본으로 사용합니다.

어떠한 이유로 인해 단일 데이터베이스 연결로 전환하길 원한다면:

  1. 컨테이너 내부의 /etc/gitlab/gitlab.rb를 편집합니다:

    sudo docker exec -it gitlab editor /etc/gitlab/gitlab.rb
    
  2. 다음 라인을 추가합니다:

    gitlab_rails['databases']['ci']['enable'] = false
    
  3. 컨테이너를 다시 시작합니다:

sudo docker restart gitlab

추천되는 다음 단계

설치를 완료한 후, 인증 옵션 및 가입 제한 사항을 포함한 추천되는 다음 단계를 고려해보세요.

업그레이드

대부분의 경우, GitLab을 업그레이드하는 것은 최신 Docker 이미지 태그를 다운로드하는 것만큼 쉽습니다.

Docker 엔진을 사용하여 GitLab 업그레이드

Docker 엔진을 사용하여 설치한 GitLab을 업그레이드하려면:

  1. 백업을 수행합니다. 최소한 데이터베이스와 GitLab 시크릿 파일을 백업합니다.

  2. 실행 중인 컨테이너를 중지합니다:

    sudo docker stop gitlab
    
  3. 기존 컨테이너를 제거합니다:

    sudo docker rm gitlab
    
  4. 새 이미지를 가져옵니다:

    sudo docker pull gitlab/gitlab-ee:<version>-ee.0
    
  5. GITLAB_HOME 환경 변수가 정의되어 있는지 확인합니다:

    echo $GITLAB_HOME
    
  6. 이전에 지정된 옵션으로 컨테이너를 다시 생성합니다:

    sudo docker run --detach \
    --hostname gitlab.example.com \
    --publish 443:443 --publish 80:80 --publish 22:22 \
    --name gitlab \
    --restart always \
    --volume $GITLAB_HOME/config:/etc/gitlab \
    --volume $GITLAB_HOME/logs:/var/log/gitlab \
    --volume $GITLAB_HOME/data:/var/opt/gitlab \
    --shm-size 256m \
    gitlab/gitlab-ee:<version>-ee.0
    

첫 번째 실행에서, GitLab은 자체를 다시 구성하고 업그레이드합니다.

버전 간에 업그레이드할 때는 GitLab 업그레이드 권장 사항을 참조하세요.

Docker compose를 사용하여 GitLab 업그레이드

Docker Compose를 사용하여 설치한 GitLab을 업그레이드하려면:

  1. 백업을 수행합니다. 최소한 데이터베이스와 GitLab 시크릿 파일을 백업합니다.
  2. docker-compose.yml을 편집하고 가져올 버전을 변경합니다.
  3. 가장 최신 릴리스를 다운로드하고 GitLab 인스턴스를 업그레이드합니다:

    docker compose pull
    docker compose up -d
    

Community Edition를 Enterprise Edition으로 변환

기존의 Docker 기반 GitLab Community Edition (CE) 컨테이너를 Enterprise Edition (EE) 컨테이너로 변환하려면 버전을 업그레이드하는 것과 같은 접근 방식을 사용할 수 있습니다.

CE에서 EE로 변환하는 것을 권장하는 버전은 같은 CE 버전에서 EE로 변환하는 것입니다 (예: CE 14.1에서 EE 14.1). 이는 명시적으로 필요한 것은 아니며, 표준적인 업그레이드(예: CE 14.0에서 EE 14.1)도 작동할 것입니다. 다음 단계는 동일한 버전을 업그레이드하는 것으로 가정합니다.

  1. 백업을 수행합니다. 최소한 데이터베이스와 GitLab 시크릿 파일을 백업합니다.

  2. 현재의 CE 컨테이너를 중지하고 제거하거나 이름을 변경합니다.

  3. GitLab EE로 새 컨테이너를 생성하려면 docker run 명령이나 docker-compose.yml 파일에서 ceee로 바꿉니다. 그러나 CE 컨테이너의 이름, 포트 및 파일 매핑, 그리고 버전은 재사용합니다.

GitLab 다운그레이드

GitLab을 업그레이드한 후 다운그레이드하려면 다음을 수행하십시오.

  1. 사용할 GitLab 버전 및 에디션 찾기를 통해 업그레이드 절차를 따릅니다.

  2. 업그레이드의 일부로 만든 데이터베이스 백업을 복원합니다.

    • 복원은 업그레이드의 일환으로 만든 데이터베이스 데이터 및 스키마 변경(마이그레이션)을 되돌리는 데 필요합니다.
    • GitLab 백업은 정확히 동일한 버전 및 에디션으로 복원되어야 합니다.
    • 도커 이미지를 위한 복원 단계를 따르십시오. 이 과정에는 Puma 및 Sidekiq를 중지하는 것도 포함됩니다. 데이터베이스만 복원해야 하므로 gitlab-backup restore 명령행 인수에 SKIP=artifacts,repositories,registry,uploads,builds,pages,lfs,packages,terraform_state를 추가하십시오.

GitLab 백업

다음 명령어를 사용하여 GitLab 백업을 생성할 수 있습니다.

docker exec -t <container name> gitlab-backup create

GitLab 백업 및 복원 방법에 대해 자세히 알아보세요.

note
만약 GITLAB_OMNIBUS_CONFIG 환경 변수를 통해 구성이 완전히 제공되는 경우(["Pre-configure Docker Container"](#pre-configure-docker-container) 단계에 따라), 즉, 구성이 gitlab.rb 파일에 직접 설정되지 않는다면 gitlab.rb 파일을 백업할 필요가 없습니다.
caution
GitLab 비밀 파일 백업은 백업에서 GitLab을 복구할 때 복잡한 과정을 피하기 위해 필요합니다. 비밀 파일은 컨테이너 내부의 /etc/gitlab/gitlab-secrets.json 또는 컨테이너 호스트의 $GITLAB_HOME/config/gitlab-secrets.json에 저장됩니다.(#set-up-the-volumes-location 참조)

데이터베이스 백업 생성

문제가 발생할 경우 GitLab 업그레이드를 롤백하기 위해 데이터베이스 백업이 필요합니다.

docker exec -t <container name> gitlab-backup create SKIP=artifacts,repositories,registry,uploads,builds,pages,lfs,packages,terraform_state

백업은 도커에 의해 마운트된 볼륨인 /var/opt/gitlab/backups에 작성됩니다.(#set-up-the-volumes-location 참조)

문제 해결

도커를 사용하는 GitLab 설치에 대한 문제 해결을 참조하세요.