Post

gitlab 설치 방법

목차


개요

docker를 이용하여 Gitlab을 구축하도록 한다.


사전준비

Ubuntu 22.04 설치

/etc/netplan/00-installer-config.yml 파일을 수정 및 적용하여 아이피를 할당, 인터넷이 되도록 세팅한다.

apt-get update 로 저장소 한번 업데이트 해 주고

apt-get install ssh 로 ssh 서비스 설치

/etc/ssh/sshd_config 파일을 수정하여 포트를 22가 아닌 다른 포트로 변경해줌 (22가 아닌 다른 포트로 변경하는 것은 Gitlab의 ssh 포트를 22로 설정해주기 위함)

시간 설정을 UTC에서 KST로 변경해준다.

1
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

도커 설치

도커 키 등록

1
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

도커 설치링크 /etc/apt/sources_list 에 추가

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

apt 저장소 업데이트

apt-get update

도커 설치

1
apt-get install docker-ce docker-ce-cli containerd.io

도커 컴포즈 설치

1
2
3
4
5
6
7
# 도커 컴포즈 사전준비
apt install apt-transport-https ca-certificates curl software-properties-common

# install docker-compose 2.6.0
# 도커 compose 버전을 확인하여 URL의 버전 주소를 바꿔주도록 한다.
# curl -L https://github.com/docker/compose/releases/download/<version>/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
curl -L https://github.com/docker/compose/releases/download/v2.6.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

GitLab 설치

도커의 설치가 끝났으면 Gitlab을 설치할 준비가 완료되었다.

디렉토리 구성

필자는 깃랩 볼륨을 바인드마운트 형식으로 사용할 것이다.

최상위 디렉토리에 gitlab 디렉토리를 만들고 바인드 마운트 할 디렉토리를 세팅한다.

1
2
3
4
5
6
7
8
9
mkdir /gitlab
cd /gitlab

# 깃랩 config 파일 저장 위치
mkdir ./config
# 깃랩 data 저장 위치
mkdir ./data
# 깃랩 로그 저장 위치
mkdir ./logs

/gitlab 위치에 docker-compose.yml 파일을 생성한다

1
touch /gitlab/docker-compose.yml

최종적으로 구성된 내용은 이렇게 된다.

1
2
3
4
5
/gitlab
ㄴ config/ # 깃랩 설정파일 저장 위치
ㄴ data/   # 깃랩 데이터 (소스) 저장 위치
ㄴ logs/   # 깃랩 로그 저장 우치
ㄴ docker-compose.yml   # 도커 컴포즈 설정 파일

깃랩 데이터 백업용 디스크 마운트

/mnt/gitlab_backup 경로에 GitLab 백업용 디렉토리를 생성하고 새 하드디스크를 해당 경로에 마운트해준다.

마운트하는 방법은 아래 링크 참조

4tb 하드 추가 마운트

마운트 후 최종적으로 설정된 값은 다음과 같다.

1
2
3
4
5
6
7
8
9
root@git:/mnt/gitlab_backup# lsblk
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                         8:0    0  3.6T  0 disk
├─sda1                      8:1    0    1G  0 part /boot/efi
├─sda2                      8:2    0    2G  0 part /boot
└─sda3                      8:3    0  3.6T  0 part
  └─ubuntu--vg-ubuntu--lv 253:0    0  3.6T  0 lvm  /
sdb                         8:16   0  3.6T  0 disk
└─sdb1                      8:17   0  3.6T  0 part /mnt/gitlab_backup

설정이 끝났으면 /gitlab/docker-compose.yml 파일을 다음과 같이 설정한다.

바인드 마운트는 - "<host_path>:<container_path>" 형식으로 구성이 된다.

컨테이너 내부의 에 저장되는 값은 에 저장이 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
version: '3.9'

services:
  gitlab:
    image: "gitlab/gitlab-ce:latest"
    container_name: 'gitlab_container'
    restart: always
    hostname: "gitlab.iasdf.com" # hostname
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://gitlab.iasdf.com' # 외부 ip 혹은 접근할 ip
        gitlab_rails['gitlab_shell_ssh_port'] = 22
        # 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"  # 백업파일 바인드마운트

맨 처음 sshd_config에서 포트를 22가 아닌 다른 포트로 변경하였던 것은 GitLab 컨테이너의 ssh 포트를 22로 설정해주기 위함이었다.

hostnameGIT_LAB_OMNIBUS_CONFIG -> external_url 의 경우 IP 또는 URL이 변경 시 꼭 바꿔주도록 한다.

이후 볼륨을 적당하게 바인드마운트 시킨 뒤 아래 명령어로 GitLab을 실행시킨다.

docker-compose up -d

만약 docker-compose.yml 파일을 바꿔야 할 경우 docker-compose down 명령어로 컨테이너 종료 후 설정을 바꾼 뒤 docker-compose up -d 로 재실행시키면 된다.

이후 gitlab 컨테이너가 정상적으로 올라오면 아래 명령어를 통해 깃랩 관리자 초기 비밀번호를 획득한다.

1
2
docker exec -it <container name> grep 'Password:' /etc/gitlab/initial_root_password
# docker exec -it gitlab_container grep 'Password:' /etc/gitlab/initial_root_password

설정된 gitlab에 접속해 초기 비밀번호로 로그인한다.

도커 컴포즈로 깃랩 컨테이너를 생성 및 시작할 시 재부팅 후 자동으로 올라오는 듯 하다.

This post is licensed under CC BY 4.0 by the author.