웹사이트 검색

Ubuntu 20.04 LTS에서 Docker와 함께 GitLab을 설치하는 방법


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

  • 우분투 18.04(바이오닉 비버)

이 페이지에서

  1. 1단계 - Docker 및 Docker Compose 설치
  2. 2단계 - GitLab 디렉토리 설정
    1. GitLab 데이터 디렉토리 및 .env 파일 생성
    2. docker-compose.yml 스크립트 만들기
    3. SSL 및 DHAPARAM 인증서 생성

    1. 컨테이너 내 GitLab 서비스 상태 확인\n
    2. GitLab 컨테이너 액세스
    3. GitLab 구성 편집 gitlab.rb

    GitLab은 GitLab Inc.에서 개발한 Rails 기반의 오픈 소스 리포지토리 관리자입니다. 팀이 애플리케이션 코딩, 테스트 및 배포에 대해 협업할 수 있는 웹 기반 git 리포지토리 관리자입니다. GitLab은 위키, 문제 추적, 코드 검토, 활동 피드를 비롯한 여러 기능을 제공합니다.

    이 자습서에서는 Docker 및 Docker Compose를 사용하여 GitLab을 설치하는 방법을 보여줍니다. 또한 Ubuntu 20.04를 기본 운영 체제로 사용하고 공식 Ubuntu FocalFossa 리포지토리에서 도커를 설치합니다.

    전제 조건

    • 우분투 서버 20.04
    • 최소 4GB RAM
    • 루트 권한\n

    우리는 무엇을 할 것인가?

    • Docker 및 Docker Compose 설치
    • GitLab Docker 프로젝트 설정\n
    • GitLab 컨테이너 구축
    • GitLab 사후 설치\n

    1단계 - Docker 및 Docker Compose 설치

    먼저 Ubuntu 20.04 시스템에 docker 및 docker-compose 패키지를 설치합니다. 그리고 공식 Ubuntu FocalFossa 저장소에서 제공하는 도커 패키지를 사용할 것입니다.

    모든 리포지토리를 최신 버전으로 업데이트하고 아래의 apt 명령을 사용하여 docker 및 docker-compose를 설치합니다.

    sudo apt update
    sudo apt install docker.io containerd docker-compose

    모든 설치가 완료되면 docker 서비스를 시작하고 시스템 부트에 추가합니다.

    systemctl start docker
    systemctl enable docker

    다음으로 아래의 systemctl 명령을 사용하여 docker 서비스를 확인합니다.

    systemctl status docker

    결과적으로 docker 서비스는 Ubuntu 20.04 Server에서 실행됩니다.

    docker 설치를 확인하려면 아래 docker "hello-world" 명령을 실행하십시오.

    docker run hello-world

    이제 아래와 같이 docker에서 \hello-world\ 메시지를 받게 됩니다.

    이제 docker 컨테이너와 docker-compose를 사용하여 GitLab을 설치할 준비가 되었습니다.

    2단계 - GitLab 디렉토리 설정

    이 단계에서는 GitLab 설치를 위한 프로젝트 디렉토리를 설정합니다.

    gitlab이라는 새 디렉토리를 만들고 그 디렉토리로 이동합니다.

    mkdir -p gitlab; cd gitlab/

    "gitlab" 디렉터리는 GitLab의 모든 도커 스크립트 및 구성을 저장하는 데 사용됩니다.

    GitLab 데이터 디렉토리 및 .env 파일 생성

    이 섹션에서는 모든 GitLab 데이터를 저장하기 위한 새 디렉토리를 생성하고 docker에서 사용할 새 ".env" 파일을 생성합니다.

    아래의 mkdir 명령을 사용하여 새 GitLab 데이터 디렉터리 "/srv/gitlab"를 만듭니다.

    mkdir -p /srv/gitlab/{config/ssl,logs,data}

    다음으로 "gitlab" 프로젝트 디렉토리에서 vim 편집기를 사용하여 새 ".env" 파일을 만듭니다.

    vim .env

    아래와 같이 GitLab 데이터 디렉터리 "/srv/gitlab" 값으로 "GITLAB_HOME" 환경 변수를 정의합니다.

    GITLAB_HOME=/srv/gitlab

    저장하고 닫습니다.

    docker-compose.yml 스크립트는 Gitlab 볼륨에 환경 변수를 사용합니다.

    docker-compose.yml 스크립트 만들기

    다음으로 GitLab 컨테이너를 빌드하는 데 사용할 새 "docker-compose.yml"을 만듭니다.

    아래의 vim 명령을 사용하여 새 docker-compose.yml 파일을 만듭니다.

    vim docker-compose.yml

    "gitlab-ce" 최신 버전의 이미지로 "web"이라는 서비스를 정의하고 GitLab 도메인 이름으로 "hostname"을 변경합니다.

    web:
      image: 'gitlab/gitlab-ce:latest'
      restart: always
      hostname: 'gitlab.hakase-labs.io'

    아래와 같이 Gitlab 설치 환경을 구성합니다. 그리고 "external_url"을 HTTPS 보안 프로토콜로 변경하고 "gitlab_rails[gitlab_shell_ssh_port]"를 컨테이너의 대체 SSH 포트로 변경해야 합니다.

      environment:
        GITLAB_OMNIBUS_CONFIG: |
          # Add any other gitlab.rb configuration here, each on its own line
          external_url 'https://gitlab.hakase-labs.io'
          gitlab_rails['gitlab_shell_ssh_port'] = 2224
          nginx['redirect_http_to_https'] = true
          nginx['ssl_certificate'] = "/etc/gitlab/ssl/fullchain.pem"
          nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/privkey.pem"
          nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem"

    다음으로 아래와 같이 GitLab 컨테이너의 포트를 정의합니다. 그리고 SSH 포트 "2224"를 사용자 지정 포트로 변경하고 상단의 "gitlab_shell_ssh_port" 포트와 일치하는지 확인합니다.

      ports:
        - '80:80'
        - '443:443'
        - '2224:22'

    그런 다음 볼륨 또는 GitLab 데이터 디렉터리를 정의합니다. 모든 GitLab 데이터 디렉토리는 "GITLAB_HOME" 디렉토리에 있으며, 이 디렉토리는 상단의 ".env" 파일에 환경 변수가 설정되어 있습니다.

      volumes:
        - '${GITLAB_HOME}/config:/etc/gitlab'
        - '${GITLAB_HOME}/logs:/var/log/gitlab'
        - '${GITLAB_HOME}/data:/var/opt/gitlab'
        - '${GITLAB_HOME}/config/ssl:/etc/gitlab/ssl'

    저장하고 닫습니다.

    아래는 전체 구성입니다.

    web:
      image: 'gitlab/gitlab-ce:latest'
      restart: always
      hostname: 'gitlab.hakase-labs.io'

      environment:
        GITLAB_OMNIBUS_CONFIG: |
          # Add any other gitlab.rb configuration here, each on its own line
          external_url 'https://gitlab.hakase-labs.io'
          gitlab_rails['gitlab_shell_ssh_port'] = 2224
          nginx['redirect_http_to_https'] = true
          nginx['ssl_certificate'] = "/etc/gitlab/ssl/fullchain.pem"
          nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/privkey.pem"
          nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem"  

      ports:
        - '80:80'
        - '443:443'
        - '2224:22'

      volumes:
        - '${GITLAB_HOME}/config:/etc/gitlab'
        - '${GITLAB_HOME}/logs:/var/log/gitlab'
        - '${GITLAB_HOME}/data:/var/opt/gitlab'
        - '${GITLAB_HOME}/config/ssl:/etc/gitlab/ssl'

    그 결과 GitLab 프로젝트 설치를 위한 "docker-compose.yml" 스크립트가 생성되었습니다.

    SSL 및 DHAPARAM 인증서 생성

    이 단계에서는 GitLab 설치를 위한 SSL Letsencrypt를 생성합니다.

    서버에서 아래의 apt 명령을 사용하여 certbot 도구를 설치합니다.

    sudo apt install certbot

    그런 다음 아래 certbot 명령을 사용하여 GitLab용 SSL 인증서를 생성합니다.

    certbot certonly --rsa-key-size 2048 --standalone --agree-tos --no-eff-email --email  -d gitlab.hakase-labs.io

    모두 완료되면 /etc/letsencrypt/live/gitlab.yourdomain 디렉토리에서 인증서를 사용할 수 있습니다.

    이제 인증서 파일 "fullchain.pem" 및 "privkey.pem"을 "/srv/gitlab/config/ssl/" 디렉터리에 복사합니다.

    cp /etc/letsencrypt/live/gitlab.hakase-labs.io/fullchain.pem /srv/gitlab/config/ssl/
    cp /etc/letsencrypt/live/gitlab.hakase-labs.io/privkey.pem /srv/gitlab/config/ssl/

    그리고 GitLab용 SSL Letsencrypt가 준비되었습니다.

    다음으로 아래의 openssl 명령을 사용하여 DHPARAM 인증서 "dhparam.pem"을 생성합니다.

    sudo openssl dhparam -out /srv/gitlab/config/ssl/dhparams.pem 2048

    그리고 GitLab 설치를 위한 모든 인증서가 생성되었으며 GitLab 컨테이너를 빌드할 준비가 되었습니다.

    3단계 - GitLab 컨테이너 구축

    이 단계에서는 위에서 만든 모든 구성과 docker-compose 명령을 사용하여 GitLab 컨테이너를 빌드합니다.

    더 진행하기 전에 "gitlab" 프로젝트 디렉토리와 GitLab Data 디렉토리의 디렉토리 구조에서 사용 가능한 모든 파일을 확인할 수 있습니다.

    ls -lah ~/gitlab/
    tree /srv/gitlab

    아래는 당신이 얻을 결과입니다.

    다음으로 "~/gitlab" 프로젝트 디렉토리로 이동하여 아래의 "docker-compose" 명령을 사용하여 GitLab 컨테이너를 빌드합니다.

    cd ~/gitlab
    docker-compose up -d

    모든 작업이 완료되면 아래와 같은 결과를 얻을 수 있습니다.

    이제 다음 명령을 사용하여 Ubuntu 시스템에서 실행 중인 컨테이너 및 "LISTEN" 포트를 확인하십시오.

    docker-compose ps
    ss -plnt

    그리고 "gitlab_web_1" 컨테이너가 실행 중이고 GitLab 컨테이너에서 사용하는 HTTP, HTTPS 및 SSH 포트 "2224"가 있습니다.

    보시다시피 GitLab 컨테이너가 실행 중이며 GitLab 설치를 설정할 준비가 되었습니다.

    4단계 - GitLab 사후 설치

    웹 브라우저를 열고 주소 표시줄에 GitLab URL 설치를 입력합니다.

    그러면 GitLab 비밀번호 재설정 페이지가 나타납니다.

    기본 사용자 "root"의 새 비밀번호를 입력하고 "Change your password" 버튼을 클릭하십시오.

    이제 아래와 같이 GitLab 로그인 페이지가 나타납니다.

    기본 사용자 "root"와 새 암호로 로그인한 다음 "Sign in"을 클릭하십시오.

    그러면 아래와 같이 GitLab 대시보드가 표시됩니다.

    보시다시피 docker와 docker-compose를 이용한 GitLab 설치가 완료되었습니다.

    5단계 - 기본 구성 GitLab 컨테이너

    GitLab 설치 후 GitLab 컨테이너를 삭제하지 않고 GitLab 컨테이너에 몇 가지 추가 구성을 추가할 수 있습니다. 이 단계에서는 GitLab 컨테이너를 관리하는 기본 방법을 보여줍니다.

    더 진행하기 전에 "~/gitlab" 프로젝트 디렉토리로 이동하고 다음 명령을 사용하여 컨테이너 상태를 확인하십시오.

    cd ~/gitlab
    docker-compose ps

    GitLab 컨테이너가 실행됩니다.

    컨테이너 내부 GitLab 서비스 상태 확인

    Gitlab 컨테이너 내부의 모든 GitLab 서비스를 확인하려면 아래와 같이 "docker exec" 명령을 사용합니다.

    sudo docker exec -it gitlab_web_1 gitlab-ctl status

    아래는 당신이 얻을 결과입니다.

    보시다시피 모든 GitLab 서비스 구성 요소가 실행 중입니다.

    GitLab 컨테이너에 액세스

    GitLab 컨테이너에 SSH로 연결하려면 아래와 같이 컨테이너 내부의 "bash" 셸과 함께 "docker exec"를 사용합니다.

    sudo docker exec -it gitlab_web_1 /bin/bash

    이제 GitLab 컨테이너의 기본 Ubuntu 버전을 확인합니다.

    cat /etc/lsb-release

    GitLab 컨테이너는 Ubuntu 16.04 Xenial을 기반으로 합니다.

    이제 "exit"를 입력하여 GitLab 컨테이너에서 로그아웃합니다.

    GitLab 구성 편집 gitlab.rb

    다음으로 컨테이너 내부의 GitLab 구성을 변경하려면 도커 컨테이너 자체에서 기본 "editor"를 사용할 수 있습니다.

    아래의 docker 명령을 사용하여 컨테이너 내부의 "/etc/gitlab/gitlab.rb" 구성을 편집합니다.

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

    이제 "gitlab.rb" 구성 파일과 함께 기본 "nano" 편집기가 화면에 나타납니다.

    구성을 입력하고 저장하고 종료합니다.

    그런 다음 GitLab에 새로운 변경 사항을 적용하려면 아래 명령을 사용하여 Gitlab 컨테이너 서비스를 다시 시작하십시오.

    sudo docker restart gitlab_web_1

    이제 오류가 없는지 확인하고 다음 명령을 사용하여 GitLab 컨테이너 상태를 확인하십시오.

    sudo docker-compose ps

    이제 GitLab 코테이너가 "Up(healty)" 상태인지 확인합니다.

    그 결과 GitLab의 새로운 구성이 적용되었습니다.

    그리고 마지막으로 docker와 docker-compose를 이용한 GitLab 설치가 성공적으로 완료되었습니다.