웹사이트 검색

Ubuntu 22.04에서 Docker로 GitLab을 설치하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • Ubuntu 22.04(Jammy Jellyfish)
  • Ubuntu 18.04(Bionic Beaver)

이 페이지에서

  1. 전제 조건
  2. 1단계 - 방화벽 구성\n
  3. 2단계 - 종속성 설치
  4. 3단계 - 시스템 SSH 포트 변경
  5. 4단계 - Docker 및 Docker Compose 설치
  6. 5단계 - Docker 볼륨 설정
  7. 6단계 - Docker Compose를 사용하여 Gitlab 설치\n
  8. 7단계 - Gitlab 구성
    1. Gitlab 액세스
    2. 공개 가입 제한\n
    3. Gitlab 프로필 구성\n
    4. 루트 암호 변경\n
    5. 사용자 이름 변경
    6. Prometheus 지표 비활성화 및 개인정보 보호 개선\n

    1. SSH 키 추가
    2. 프로젝트 만들기\n

    Gitlab 서버는 클라우드 호스팅 Gitlab 버전 제어의 오픈 소스 버전입니다. 클라우드 호스팅에 비해 리포지토리를 자체 호스팅하는 이점은 코드를 완전히 제어할 수 있다는 것입니다.

    이 가이드는 Ubuntu 22.04 서버에서 Docker를 사용하여 Gitlab 서버를 설치하는 방법을 알려줍니다. Gitlab 서버는 무료 Community 에디션과 유료 Enterprise 에디션의 두 가지 에디션을 제공합니다. 커뮤니티 에디션을 설치합니다. 더 많은 기능이 필요한 경우 Enterprise 버전으로 쉽게 업그레이드할 수 있습니다.

    전제 조건

    • A server running Ubuntu 22.04.

    • A non-root user with sudo privileges.

    • Uncomplicated Firewall(UFW) is enabled and running.

    • A Fully Qualified domain name (FQDN) pointing to the server like, gitlab.example.com.

    • Everything is updated.

      $ sudo apt update && sudo apt upgrade
      

    1단계 - 방화벽 구성

    패키지를 설치하기 전 첫 번째 단계는 HTTP 및 HTTPS 연결을 허용하도록 방화벽을 구성하는 것입니다.

    방화벽의 상태를 확인하십시오.

    $ sudo ufw status
    

    다음과 같은 내용이 표시되어야 합니다.

    Status: active
    
    To                         Action      From
    --                         ------      ----
    OpenSSH                    ALLOW       Anywhere
    OpenSSH (v6)               ALLOW       Anywhere (v6)
    

    HTTP 및 HTTP 포트를 허용합니다.

    $ sudo ufw allow http
    $ sudo ufw allow https
    

    SMTP를 통해 메일을 수신하기 위해 포트 587을 엽니다. SMTP 메일러에 다른 포트를 사용 중일 수 있습니다.

    $ sudo ufw allow http
    $ sudo ufw allow 587
    

    상태를 다시 확인하여 확인하십시오.

    $ sudo ufw status
    Status: active
    
    To                         Action      From
    --                         ------      ----
    OpenSSH                    ALLOW       Anywhere
    80/tcp                     ALLOW       Anywhere
    443                        ALLOW       Anywhere
    587                        ALLOW       Anywhere
    OpenSSH (v6)               ALLOW       Anywhere (v6)
    80/tcp (v6)                ALLOW       Anywhere (v6)
    443 (v6)                   ALLOW       Anywhere (v6)
    587 (v6)                   ALLOW       Anywhere (v6)
    

    2단계 - 종속성 설치

    Gitlab을 설치하기 전에 튜토리얼을 진행하는 동안 필요한 특정 패키지를 설치해야 합니다.

    $ sudo apt install ca-certificates curl openssh-server apt-transport-https gnupg lsb-release -y
    

    이러한 패키지 중 일부는 시스템에 미리 설치되어 있을 수 있습니다.

    3단계 - 시스템 SSH 포트 변경

    Gitlab은 시스템 SSH 포트와 충돌하는 기본 SSH 포트를 사용합니다. 최상의 결과를 얻으려면 시스템 기본 포트를 변경하는 것이 좋습니다.

    이렇게 하려면 편집을 위해 /etc/ssh/sshd_config 파일을 엽니다.

    $ sudo nano /etc/ssh/sshd_config
    

    다음 행을 찾아 앞의 해시(#)를 제거하고 값을 22에서 원하는 값으로 변경합니다. 튜토리얼에서는 다음을 변경하여 2425를 선택했습니다.

    #Port 22
    

    에게

     Port 2425
    

    Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    SSH 서비스를 다시 시작합니다.

    $ sudo systemctl restart sshd
    

    방화벽에서 포트 2425를 엽니다.

    $ sudo ufw allow 2425
    

    현재 SSH 세션을 닫고 새 포트를 사용하여 다시 로그인하십시오.

    $ ssh <serverIP> -p 2425
    

    4단계 - Docker 및 Docker Compose 설치

    Dockers 공식 GPG 키를 추가합니다.

    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
    

    다음 명령을 실행하여 Docker 리포지토리를 추가합니다.

    $ echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    

    Dockers 리포지토리를 포함하도록 시스템을 업데이트합니다.

    $ sudo apt update
    

    도커를 설치합니다.

    $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    

    이 자습서에서는 이전 레거시 바이너리 대신 Docker Compose v2 플러그인을 사용합니다. 따라서 이를 실행하는 명령이 docker-compose에서 docker compose로 변경되었으며 여기에 반영됩니다.

    Docker는 높은 권한으로 실행되므로 명령을 실행하려면 sudo를 자주 사용해야 합니다. 더 나은 옵션은 Linux 사용자 계정을 docker 사용자 그룹에 추가하는 것입니다.

    $ sudo usermod -aG docker ${USER}
    

    &#36 {USER} 변수는 현재 로그인된 시스템 계정을 선택합니다. 권한을 부여하려는 사용자로 로그인하지 않은 경우 &#36 {USER}를 사용자 이름으로 바꿉니다.

    새로운 그룹 가입을 신청하려면 서버에서 로그아웃했다가 다시 로그인하거나 다음 명령을 사용하십시오. 사용자 암호를 묻는 메시지가 나타납니다.

    $ su - $(USER)
    

    5단계 - Docker 볼륨 설정

    설치를 진행하기 전에 Docker 볼륨을 통해 액세스할 Gitlab 데이터 및 구성의 위치를 설정해야 합니다.

    Docker 볼륨 디렉터리를 만듭니다.

    $ sudo mkdir /srv/gitlab -p
    

    Docker 작성 파일의 디렉터리를 만듭니다.

    $ mkdir ~/gitlab-docker
    

    디렉터리로 전환합니다.

    $ cd ~/gitlab-docker
    

    환경 변수 파일을 만들고 편집을 위해 엽니다.

    $ nano .env
    

    다음 코드를 붙여넣어 $GITLAB_HOME 변수를 정의합니다.

    GITLAB_HOME=/srv/gitlab
    

    Gitlab 컨테이너는 호스트 마운트 볼륨을 사용하여 영구 데이터를 저장합니다. 다음 표는 Gitlab 디렉토리의 로컬 위치와 컨테이너 위치의 매핑 및 각각의 용도를 보여줍니다.

    Local Location Container Location Usage
    $GITLAB_HOME/data /var/opt/gitlab For storing application data.
    $GITLAB_HOME/logs /var/log/gitlab For storing logs.
    $GITLAB_HOME/config /etc/gitlab For storing Gitlab configuration.

    6단계 - Docker Compose를 사용하여 Gitlab 설치

    Gitlab의 Docker compose 디렉토리 안에 있는지 확인하십시오.

    편집을 위해 Docker Compose 구성 파일을 만들고 엽니다.

    $ nano docker-compose.yml
    

    다음 코드를 붙여넣습니다.

    version: '3.6'
    services:
      web:
        image: 'gitlab/gitlab-ee:latest'
        container_name: 'gitlab-howtoforge'
        restart: always
        hostname: 'gitlab.example.com'
        environment:
          GITLAB_OMNIBUS_CONFIG: |
            external_url 'https://gitlab.example.com'
            gitlab_rails['smtp_enable'] = true
            gitlab_rails['smtp_address'] = "email-smtp.us-west-2.amazonaws.com"
            gitlab_rails['smtp_user_name'] = "SESUsername"
            gitlab_rails['smtp_password'] = "SESKey"
            gitlab_rails['smtp_domain'] = "example.com"
            gitlab_rails['smtp_enable_starttls_auto'] = true
            gitlab_rails['smtp_port'] = 587
            gitlab_rails['smtp_authentication'] = "login"
            gitlab_rails['gitlab_email_from'] = ''
            gitlab_rails['gitlab_email_reply_to'] = ''
            # Add any other gitlab.rb configuration here, each on its own line
        ports:
          - '80:80'
          - '443:443'
          - '22:22'
          - '587:587'
        volumes:
          - '$GITLAB_HOME/config:/etc/gitlab'
          - '$GITLAB_HOME/logs:/var/log/gitlab'
          - '$GITLAB_HOME/data:/var/opt/gitlab'
        shm_size: '256m'
    

    파일에 정의된 모든 옵션을 살펴보겠습니다.

    • 이미지는 Dockerhub에서 Gitlab의 Docker 이미지 위치를 나타냅니다.
    • container_name을 사용하면 Docker 네트워크 내에서 컨테이너를 참조할 때 사용할 수 있도록 Docker 컨테이너에 레이블을 적용할 수 있습니다.\n
    • restart는 컨테이너에 대한 재시작 정책을 지정합니다. 항상으로 설정하면 컨테이너가 종료되면 자동으로 다시 시작됩니다.\n
    • hostname은 컨테이너 내부 호스트 이름 또는 이 경우 Gitlab이 설치될 URL을 정의합니다.\n
    • 환경은 Gitlab 구성 설정을 입력할 수 있는 GITLAB_OMNIBUS_CONFIG 변수를 제공합니다.\n
    • external_url은 Gitlab이 설치될 도메인을 나타냅니다. https 프로토콜을 사용하면 Lets Encrypt SSL 인증서가 자동으로 설치됩니다.\n
    • SMTP 세부 정보 - Gitlab 인스턴스가 중요한 이메일과 알림을 보낼 수 있도록 SMTP 세부 정보를 포함했습니다. 자습서에서는 Amazons SES 서비스를 사용하고 있습니다. 그러나 원하는 서비스를 사용할 수 있습니다. 구성 방법을 알아보려면 SMTP 메일러용 Gitlab 문서를 확인하세요.\n
    • 포트는 호스트에 포트 또는 포트 범위를 게시하도록 컨테이너에 지시합니다. Gitlab에는 22(SSH), 80(HTTP), 443(HTTPS), 587(SMTP) 포트가 필요하기 때문에 시스템에 노출되어 있습니다. Gitlab이 서버에서 비표준 포트를 사용하도록 하려면(아마도 사용할 수 없기 때문에) 먼저 호스트 포트를 제공한 다음 컨테이너 포트를 제공합니다. 예를 들어 서버가 이미 SSH(22) 포트를 사용하고 있으므로 Gitlab에 다른 포트(예: 3333)를 통해 SSH를 사용하도록 지시할 수 있습니다. 그런 다음 위 파일의 22:22를 3333:22로 변경합니다. 또한 위의 GITLAB_OMNIBUS_CONFIG 아래에 gitlab_rails[gitlab_shell_ssh_port] = 3333 행을 추가해야 합니다.\n
    • 볼륨은 영구 데이터를 저장하기 위해 서버에 있는 디렉토리를 정의합니다. 5단계에서 정의한 대로 이제 Compose 파일에서 $GITLAB_HOME을 사용하여 컨테이너에 관련 디렉터리를 마운트할 수 있습니다.\n
    • shm_size는 컨테이너가 사용하는 공유 메모리를 나타냅니다. 기본적으로 Docker는 공유 메모리 디렉토리(/dev/shm에 마운트됨)에 64MB를 할당합니다. 이것은 Gitlab 컨테이너가 생성하는 Prometheus 메트릭에 대해 충분하지 않음을 증명할 수 있습니다. 따라서 최소 256MB의 공유 메모리가 docker의 원활한 실행을 보장합니다. 시스템의 RAM에 따라 값을 늘릴 수 있습니다. 또는 설치 후 관리 영역에서 Prometheus 메트릭을 비활성화할 수 있습니다. 다음 단계에서 이를 살펴보겠습니다.

    Gitlab Docker 컨테이너를 시작합니다.

    $ docker compose up -d
    

    프로세스가 완료되는 데 몇 분 정도 걸립니다. Docker 로그를 사용하여 진행 상황을 추적할 수 있습니다.

    $ docker logs gitlab-howtoforge -f
    

    Ctrl + C를 눌러 로그 모니터링을 종료합니다.

    다음 명령을 사용하여 Gitlab 컨테이너의 상태를 확인할 수 있습니다.

    $ docker ps
    

    Gitlab 14.0부터는 자동으로 루트 암호를 생성하여 initiall_root_password 파일에 저장합니다. 이 파일은 /srv/gitlab/config 디렉토리에서 찾을 수 있습니다. 루트 암호를 보려면 다음 명령을 실행하십시오.

    $ sudo cat /srv/gitlab/config/initial_root_password
    

    비슷한 출력을 받게 됩니다.

    # WARNING: This value is valid only in the following conditions
    #          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
    #          2. Password hasn't been changed manually, either via UI or via command line.
    #
    #          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
    
    Password: Hz3t7Etn18wB6VAfBWyDlYbN2VQdMCO0xIIENfDHcFo=
    
    # NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
    

    암호를 복사하고 나중에 사용할 수 있도록 저장하십시오. 모든 것이 설정되었으므로 이제 구성을 진행할 수 있습니다.

    7단계 - Gitlab 구성

    Gitlab에 액세스하기

    브라우저에서 URL https://gitlab.example.com을 열면 다음과 같은 로그인 화면이 나타납니다.

    root를 사용자 이름과 암호로 입력합니다. 이전 단계에서 Gitlab 대시보드에 로그인하기 위해 얻었습니다. 로그인하면 다음 대시보드 화면으로 이동합니다.

    보시다시피 Gitlab은 인스턴스를 모니터링하기 위한 프로젝트를 이미 생성했습니다.

    공개 가입 제한

    기본적으로 누구나 계정을 만들고 액세스할 수 있습니다. 원하지 않으면 끌 수 있습니다. 다행스럽게도 이에 대한 설정이 대시보드에 팝업 화면 형태로 표시됩니다. 끄기 버튼을 클릭하여 Gitlab 인스턴스에서 공개 가입을 제한합니다. 이렇게 하면 다음 설정 페이지로 리디렉션됩니다.

    제한하려면 가입 활성화 옵션을 선택 취소하십시오. 변경 사항 저장 버튼을 눌러 설정을 적용합니다.

    대시보드에 팝업이 표시되지 않는 경우 메뉴 버튼을 클릭하고 거기에서 관리자 패널에 액세스하여 설정 페이지에 액세스할 수 있습니다.

    관리자 패널에 들어가면 왼쪽 사이드바의 설정 옵션 위로 마우스를 가져간 다음 일반 하위 메뉴를 클릭합니다. 여기에서 가입 제한 패널에 도달할 수 있습니다.

    Gitlab 프로필 구성

    기본 프로필은 매우 단조롭고 표시할 항목이 없습니다. 이를 변경하려면 왼쪽 상단 모서리에 있는 사용자 아이콘을 클릭하여 드롭다운 메뉴를 표시하고 프로필 편집 옵션을 선택합니다.

    이름, 이메일 및 기타 정보를 추가할 수 있는 프로필 설정 페이지로 이동합니다. 완료되면 프로필 설정 업데이트를 클릭합니다. 여기에서 구성할 항목이 더 있으므로 홈페이지로 돌아가지 마십시오.

    루트 비밀번호 변경

    이것은 가장 중요한 단계 중 하나입니다. 기본 루트 암호를 즉시 변경해야 합니다. 이전 버전에서는 Gitlab에서 설치의 일부로 변경해야 했지만 이제는 선택 사항으로 만들었습니다. 비밀번호를 변경하려면 왼쪽 사이드바에서 비밀번호 메뉴를 클릭합니다.

    비밀번호 세부 정보를 입력하고 비밀번호 저장을 클릭하여 변경합니다. 인스턴스에서 로그아웃되며 다시 로그인해야 합니다.

    사용자 이름 변경

    기본 Gitlab 사용자 이름을 root에서 원하는 것으로 변경할 수 있습니다. 그렇게 하려면 왼쪽 사이드바에서 계정 메뉴를 클릭하십시오.

    페이지에서 새 사용자 이름을 입력하고 사용자 이름 업데이트 버튼을 클릭하여 변경합니다. 확인하라는 메시지가 다시 표시됩니다. 사용자 이름 업데이트 버튼을 다시 눌러 변경 사항을 확인합니다.

    계정 보안을 강화하려면 여기에서 2단계 인증을 활성화해야 합니다.

    Prometheus 지표 비활성화 및 개인정보 보호 개선

    이전 단계에서 드롭릿의 공유 메모리 크기를 늘리고 최소 256MB로 유지하는 방법에 대해 논의했습니다. 주로 Prometheus 메트릭 관련 데이터를 디스크에 저장하는 데 필요합니다. 기능을 사용하지 않는 경우 기능을 비활성화해야 합니다. 설치 후에만 수행할 수 있습니다. 비활성화하려면 메뉴 모음에서 관리자 패널을 엽니다.

    관리자 패널에서 설정 >> 측정항목 및 프로파일링 메뉴 옵션을 엽니다.

    메트릭 페이지에서 메트릭 - Prometheus 섹션을 확장하고 상태 및 성능 메트릭 엔드포인트 활성화 옵션을 선택 취소합니다. 변경 사항을 적용하려면 변경 사항 저장 버튼을 클릭하십시오.

    Gitlab은 또한 모든 설치에서 사용 정보를 수집합니다. 개인정보 보호를 중시하고 원하지 않는 경우 동일한 페이지에서 사용 통계 옵션을 확장하고 서비스 핑 활성화 옵션을 선택 취소하십시오. 변경 사항을 적용하려면 변경 사항 저장 버튼을 클릭하십시오.

    8단계 - 첫 번째 프로젝트 만들기

    첫 번째 프로젝트를 만들고 커밋을 푸시해 보겠습니다.

    SSH 키 추가

    더 진행하기 전에 SSH 키를 추가해야 합니다. 이를 통해 암호를 사용하지 않고 설치와 상호 작용할 수 있습니다. SSH 키가 있는 경우 다음 명령을 건너뛸 수 있습니다. 없는 경우 다음 명령을 사용하여 만들 수 있습니다.

    $ ssh-keygen -t ed25519 -C "gitlab.example.com"
    

    이 명령은 Windows의 macOS, Linux 및 Git Bash/WSL에 공통입니다. 기본값을 수락하고 강력한 암호를 입력합니다. Windows Powershell 터미널에서 SSH 키를 생성하고 있습니다.

    Generating public/private rsa key pair.
    Generating public/private ed25519 key pair.
    Enter file in which to save the key (C:\Users\<username>/.ssh/id_ed25519):
    Enter same passphrase again:
    Your identification has been saved in C:\Users\<username>/.ssh/id_ed25519.
    Your public key has been saved in C:\Users\<username>/.ssh/id_ed25519.pub.
    SHA256:CI3Ja1LSTN+j4LQnDYkAoP+DvZB8SWrD26zDyUBRbUY gitlab.example.com
    +--[ED25519 256]--+
    |* ..+E           |
    |. + / o o        |
    | o = B o .       |
    |. o B = S        |
    |.o X +           |
    | +X.*            |
    | .=B o           |
    +----[SHA256]-----+
    

    SSH 인증 에이전트에 개인 키 ID를 추가하십시오. Windows를 사용 중인 경우 OpenSSH 인증 에이전트 서비스가 실행 중인지 확인하십시오. Linux 또는 macOS를 사용 중인 경우 다음 명령을 실행합니다.

    $ eval $(ssh-agent -s)
    

    키를 추가합니다.

    $ ssh-add C:\Users\<username>/.ssh/id_ed25519
    

    Linux 및 macOS에서는 명령이 다음으로 변경됩니다.

    $ ssh-add ~/.ssh/id_ed25519
    

    암호를 입력하라는 메시지가 표시됩니다. 입력하면 키가 추가됩니다.

    다음으로 이 설정을 ~/.ssh/config 파일에 저장해야 합니다. Windows에서는 C:\Users\\.ssh 디렉터리입니다. 파일 끝에 다음 코드를 붙여넣습니다.

    Host gitlab.example.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_ed25519
    

    이 파일에서 경로 이름은 모든 운영 체제에서 동일하게 유지됩니다. 파일을 저장합니다.

    다음으로 공개 키를 Gitlab 계정에 복사해야 합니다. 다음 명령을 통해 공개 키를 표시할 수 있습니다. 경로 이름은 여기서 모든 운영 체제에서 다시 작동합니다.

    $ cat ~/.ssh/id_ed25519.pub
    

    비슷한 출력을 얻을 수 있습니다.

    ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAml2KPhmGkdMWv7jksLKO13u3g1zI9CumKDQSpv7lYh gitlab.example.com
    

    Gitlab에서 프로필 설정을 열고 왼쪽 사이드바에서 SSH 키 메뉴를 선택합니다.

    제공된 상자에 SSH 키를 붙여넣고 계속하려면 키 추가를 클릭하십시오.

    다음으로 SSH 연결이 성공적으로 작동하는지 테스트해야 합니다. PC 터미널에서 다음 명령을 실행합니다.

    $ ssh -T 
    

    비슷한 출력을 얻을 수 있습니다. 먼저 시스템의 알려진 호스트 목록에 SSH 키를 추가하라는 메시지가 표시됩니다. 계속하려면 예를 입력합니다. 또한 Gitlab 인스턴스와 서버 IP의 SSH 키가 동일하지 않다는 경고가 표시되고 계속할지 묻는 메시지가 다시 표시됩니다. 예를 다시 입력합니다. 마지막으로 Gitlab 인스턴스에 대한 연결을 확인하는 성공 메시지를 받게 됩니다.

    The authenticity of host 'gitlab.example.com (192.0.2.0)' can't be established.
    ECDSA key fingerprint is SHA256:g5mOqAY2A3lhXW0flnLGdSU7RrDnbRFKVJCquAhLXqk.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added 'gitlab.example.com' (ECDSA) to the list of known hosts.
    Warning: the ECDSA host key for 'gitlab.example.com' differs from the key for the IP address '192.0.2.0'
    Are you sure you want to continue connecting (yes/no)? yes
    Offending key for IP in C:\Users\navjo/.ssh/known_hosts:7
    Welcome to GitLab, @navjot!
    

    이제 첫 번째 리포지토리를 만들고 일부 커밋을 만들 수 있습니다.

    프로젝트 생성

    Gitlab의 각 저장소는 프로젝트에 속합니다. 프로젝트에는 리포지토리, 문제 추적기, 병합 요청, wiki, 지속적 통합 및 지속적 배포(CI/CD) 파이프라인 및 기타 많은 기능이 포함됩니다.

    첫 번째 리포지토리를 생성하려면 홈페이지에서 새 프로젝트 버튼을 클릭합니다.

    새 프로젝트를 만드는 방법에 대한 여러 옵션이 제공되는 새 프로젝트 페이지로 이동합니다.

    계속하려면 빈 프로젝트 만들기 옵션을 선택합니다. 다음 페이지에서 프로젝트 이름을 입력합니다. 프로젝트 URL 옵션의 드롭다운 메뉴에서 사용자 이름을 선택합니다. 프로젝트 슬러그를 설정합니다. 원하는 경우 프로젝트에 대한 설명을 입력하고 필요에 따라 프로젝트의 가시성을 변경합니다. README 파일을 사용하여 리포지토리를 초기화할 수 있습니다.

    완료되면 프로젝트 만들기를 클릭합니다. 빈 README.md 파일 하나만 있는 리포지토리 페이지로 이동합니다.

    이제 리포지토리가 활성화되었으므로 명령줄에서 변경 로그를 추가해 보겠습니다. 컴퓨터에서 다음 명령을 입력하여 CHANGELOG 파일을 만들고 리포지토리로 다시 푸시합니다. 컴퓨터에 Git이 설치되어 있는지 확인하십시오.

    첫 번째 단계는 리포지토리를 복제하는 것입니다. SSH 또는 HTTPS를 사용하여 복제할 수 있습니다. SSH를 사용하여 복제합니다. 암호를 묻는 메시지가 표시됩니다.

    $ git clone :user/howtoforge-test.git
    

    나머지 명령을 입력하여 CHANGELOG 파일을 만들고 푸시합니다.

    $ cd howtoforge-test
    $ touch CHANGELOG  # Or create the file in your editor and enter a project description
    $ git add CHANGELOG
    $ git commit -m "add Changelog"
    $ git push -u origin main
    

    push 명령을 수행하는 동안 암호를 다시 입력하라는 메시지가 표시됩니다.

    Gitlab 프로젝트 페이지로 돌아가면 CHANGELOG 파일이 표시됩니다. 축하합니다! 첫 번째 프로젝트를 성공적으로 생성하고 여기에 파일을 커밋했습니다.

    9단계 - Gitlab 컨테이너 관리

    간단한 명령을 사용하여 Gitlab 컨테이너를 관리하는 방법을 살펴보겠습니다.

    언제든지 컨테이너를 중지하려면 Docker Compose 디렉터리 내에서 다음 명령을 실행합니다.

    $ docker compose down
    

    다시 시작하려면 다음 명령을 실행하십시오.

    $ docker compose up -d
    

    설정을 변경하거나 Gitlab 인스턴스에 설정을 추가하려면 GITLAB_OMNIBUS_CONFIG 변수 아래의 docker-compose.yml 파일을 편집하면 됩니다. 변경한 후에는 컨테이너를 다시 시작하여 변경 사항을 구현해야 합니다. 새 구성으로 컨테이너를 업데이트하려면 다음 명령을 실행하십시오.

    $ docker compose down --remove-orphans
    $ docker compose up -d
    

    컨테이너를 다시 시작하려면 다음 명령을 실행하십시오. 다음 재시작 명령은 Docker 작성 파일에 대한 변경 사항을 선택하지 않습니다.

    $ docker compose restart
    

    컨테이너 셸에 액세스합니다.

    $ docker exec -it <container name> bash
    

    10단계 - Gitlab 백업

    Gitlab 백업은 단일 명령을 통해 수행할 수 있습니다.

    $ docker exec -t gitlab-howtoforge gitlab-backup create
    

    백업 파일은 /srv/gitlab/data/backups 디렉터리에 저장됩니다. 이 백업에는 gitlab-secrets.json 구성 파일이 포함되어 있지 않습니다. 이 파일은 /srv/gitlab/config 디렉터리에 있습니다. 따라서 이 파일을 별도로 백업해야 합니다. Gitlab 인스턴스에 대한 모든 설정을 포함하는 다른 구성 파일인 gitlab.rb가 있습니다. 그러나 우리의 경우 작성 파일에서 GITLAB_OMNIBUS_CONFIG 변수를 사용했으므로 이 파일은 Gitlab에서 사용되지 않습니다. Gitlab을 변경하려면 변수를 통해 정의해야 합니다. 따라서 작성 파일도 백업해야 합니다.

    Gitlab 설치를 정기적으로 백업하기 위해 cron 항목을 생성할 수 있습니다.

    11단계 - Gitlab 복원

    Gitlab을 복원하려면 다른 시스템에 작동하는 Gitlab 설치가 있어야 합니다. 또한 구성 디렉토리를 복사하고 기존 설치 구성을 덮어써야 합니다.

    Gitlab을 복원하려면 여러 명령을 실행해야 합니다. 먼저 데이터베이스에 연결된 프로세스를 중지해야 합니다.

    $ docker exec -it <name of container> gitlab-ctl stop puma
    $ docker exec -it <name of container> gitlab-ctl stop sidekiq
    

    를 새 서버의 컨테이너 이름으로 바꿉니다.

    계속하기 전에 프로세스가 다운되었는지 확인하십시오.

    $ docker exec -it <name of container> gitlab-ctl status
    

    백업 파일을 /srv/gitlab/data/backups 디렉터리에 복사합니다. 존재하지 않는 경우 디렉토리를 작성하십시오.

    복원 명령을 실행하십시오. 명령에서 파일 이름의 _gitlab_backup.tar 부분을 제거해야 합니다.

    $ docker exec -it <name of container> gitlab-backup restore BACKUP=11493107454_2018_04_25_10.6.4-ce
    

    gitlab-secrets.json 파일을 복사하고 새 서버의 /srv/gitlab/config 디렉터리에 있는 기존 복사본을 덮어씁니다. 또한 백업된 작성 파일의 모든 Gitlab 설정을 최신 컨테이너의 파일로 복사합니다.

    Gitlab 컨테이너를 다시 시작합니다. docker compose restart 명령은 필요한 작성 파일에 대한 변경 사항을 선택하지 않으므로 직접 사용할 수 없습니다.

    $ docker compose down --remove-orphans
    $ docker compose up -d
    

    Gitlab을 확인하십시오.

    $ docker exec -it <name of container> gitlab-rake gitlab:check SANITIZE=true
    

    12단계 - Gitlab 업그레이드

    Gitlab을 업그레이드하려면 첫 번째 단계는 이전 중지에 표시된 대로 백업을 수행하는 것입니다.

    다음으로 Gitlabs Docker compose 디렉토리로 전환합니다.

    $ cd ~/gitlab-docker
    

    그런 다음 기존 컨테이너를 중지하고 제거합니다. 귀하의 데이터는 유지됩니다.

    $ docker compose down --remove-orphans
    

    최신 버전의 Gitlab 도커 이미지를 가져옵니다.

    $ docker compose pull
    

    컨테이너를 다시 시작하십시오.

    $ docker compose up -d
    

    이 프로세스는 Gitlab의 마이너 버전 간 업그레이드에는 적합하지만 메이저 버전으로 업그레이드할 때는 추가 단계를 수행하고 예방 조치를 취해야 합니다. 업그레이드를 수행하기 전에 Gitlabs 설명서를 참조해야 합니다.

    결론

    이것으로 Ubuntu 22.04 서버에서 Docker를 사용하여 Gitlab을 설치하는 방법을 배운 자습서를 마칩니다. 또한 첫 번째 프로젝트를 만들고 PC에서 파일을 커밋했습니다. 질문이 있으시면 아래 의견에 게시하십시오.