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 백업용 디렉토리를 생성하고 새 하드디스크를 해당 경로에 마운트해준다.
마운트하는 방법은 아래 링크 참조
마운트 후 최종적으로 설정된 값은 다음과 같다.
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로 설정해주기 위함이었다.
hostname
과 GIT_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에 접속해 초기 비밀번호로 로그인한다.
도커 컴포즈로 깃랩 컨테이너를 생성 및 시작할 시 재부팅 후 자동으로 올라오는 듯 하다.