본문 바로가기

devops

docker-compose Gitlab Installation

반응형

docker, docker-compose는 설치되어있다고 가정하고 진행함.

 

docker-compose.yml을 정의하기 전에 필요한 디렉토리를 생성해야한다.

gitlab을 데이터를 담기위한 볼륨은 로컬 또는 아래와 같이 NAS를 마운트된 경로를 지정하여 gitlab_home을 생성하고 data, logs, config 디렉토리를 만들어둔다.

그리고 소유권 및 권한을 설정하였다.

cd /mnt/bds #bds NCP NAS가 mnt/bds에 현재 마운트되어진 상태, 입맛에 맞게 로컬 경로 어딘가도 상관없음.
sudo mkdir gitlab_home #GitLab 작업 디렉터리 생성
cd gitlab_home

sudo mkdir data #어플리케이션 데이터 저장용
sudo mkdir logs #로그 저장용
sudo mkdir config #GitLab 구성 파일 저장용

sudo chown -R $USER:$USER /mnt/bds/gitlab_home #디렉토리 소유권 변경
sudo chmod -R 755 /mnt/bds/gitlab_home #권한 변경

 

docker-compose.yml을 아래와 같이 정의함.

version: '3.9'

services:
  gitlab:
    image: "gitlab/gitlab-ee:16.0.6-ee.0"
   #image: "gitlab/gitlab-ee:15.11.10-ee.0"
    container_name: gitlab
    restart: always
    hostname: "10.140.1.7"
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://10.140.1.7'
        # gitlab ssh port number
        gitlab_rails['gitlab_shell_ssh_port'] = 8022
        # gitlab backup파일 저장 시간 2592000sec -> 30days
        gitlab_rails['backup_keep_time'] = 2592000
        gitlab_rails['backup_path'] = '/usr/local/backups' 
        # Add any other gitlab.rb configuration here, each on its own line
      TZ: 'Asia/Seoul'
    ports:
      - "80:80"
      - "443:443"
      - "8022:22"
    volumes:
      - "/mnt/bds/gitlab_home/config:/etc/gitlab"
      - "/mnt/bds/gitlab_home/logs:/var/log/gitlab"
      - "/mnt/bds/gitlab_home/data:/var/opt/gitlab"
      - "/mnt/bds/gitlab_home/backups:/usr/local/backups"

docker-compose.yml에서 정의한 내용 중에 중요한 부분을 설명하겠다.

 

image:

우선 image는 최신 이미지를 docker-hub에서 찾아서 사용하면된다. 개인적으로 latest를 쓰는거 보다는 딱 버전을 지정하는 걸 좋아해서 지정했다. 만약에 나중에 유지보수하다가 gitlab 업데이트가 필요하다면 image 부분을 주석처리하고 새로운 태그를 위와 같이 써주면 업데이트가 되는 것이다.

 

restart:

컨테이너가 죽거나 장애가 나면 자동으로 restart된다.

 

hostname:

현재 따로 도메인이 없이 서버의 주소를 써주었다. 내부망에서만 사용할꺼라서 나는 도메인을 쓰지 않고 서버 IP를 사용함.

 

evironment:

gitlab의 모든 config를 자유롭게 정의할 수 있는 곳이다. 일단 external_url은 필수로 작성해주어야하고.. gitlab_rails['gitlab_shell_ssh_port'] = 8022로 셋팅을 해야지 VM 서버에 접근하는 ssh와 충돌이 나지 않겠지...

그리고 나는 추가적으로 backup도 셋팅을 구성하였다. 보다시피 30일 백업을 보관하도록 구성하였고.. 먀알 새벽2시에 모든 gitlab 데이터 백업하여 /usr/local/backups에 저장한다.

 

포트랑 볼륨을 다음과 같이 vm server와 컨테이너와 맵핑했다.

 

docker-compose.yml로 정의했으면 해당 경로에서 아래의 명령어로 docker-compose를 실행한다.

docker-compose up -d

 

그리고 아래의 명령어로 현재 container의 상태를 확인한다.

watch docker ps

STATUS에 (health: starting)이라고 뜨면 현재 컨테이너에서 gitlab이 열시미 부팅중이다.

조금 기다려보면 STATUS가 healthy로 바뀌는데 그러면 이제 10.140.1.7을 브라우져로 들어가면 gitlab이 뜬다!.

 

아래의 명령어로 gitlab root 계정의 비밀번호를 출력할 수 있다. 이걸로 로그인하면된다.

docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

 

반응형