GitLab을 Docker로 구동하는 방법

현대적인 개발 환경에서 형상 관리 도구는 필수입니다. 그중 GitLab은 코드 관리뿐만 아니라 CI/CD, 이슈 트래킹까지 지원하는 강력한 올인원 플랫폼입니다. 하지만 복잡한 의존성 때문에 직접 설치(Native Install)는 매우 까다롭습니다.

Docker를 사용하면 환경 격리를 통해 충돌을 방지하고, 명령어 한 줄로 동일한 환경을 재현할 수 있습니다. 본 칼럼에서는 가장 효율적이고 유지보수가 용이한 Docker 기반의 GitLab 구축 프로세스를 다룹니다.


📑 목차

  1. 사전 준비 사항 (System Requirements)

  2. Docker Compose를 이용한 설치 (권장 방식)

  3. GitLab 컨테이너 실행 및 핵심 설정 설명

  4. 초기 비밀번호 확인 및 접속 방법

  5. 유지보수를 위한 백업 및 업데이트 팁


🛠️ 본문

1. 사전 준비 사항

GitLab은 리소스를 제법 많이 사용하는 애플리케이션입니다. 원활한 구동을 위해 최소 사양을 확인하세요.

  • CPU: 최소 4코어 권장

  • RAM: 최소 4GB (8GB 이상 권장)

  • OS: Docker 및 Docker Compose가 설치된 Linux/macOS/Windows

2. Docker Compose 설정 (Best Practice)

단일 docker run 명령어도 가능하지만, 설정값 관리가 용이한 Docker Compose 방식을 권장합니다.

먼저, 작업을 위한 디렉토리를 생성합니다.

Bash

mkdir -p ~/gitlab-docker && cd ~/gitlab-docker

그다음 docker-compose.yml 파일을 생성하고 아래 내용을 작성합니다.

YAML

version: '3.6'
services:
  web:
    image: 'gitlab/gitlab-ee:latest' # Enterprise Edition (무료 사용 가능)
    restart: always
    hostname: 'gitlab.example.com'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://<서버-IP-또는-도메인>'
        # SSH 포트 변경 시 아래 설정 활성화
        # gitlab_rails['gitlab_shell_ssh_port'] = 2222
    ports:
      - '80:80'
      - '443:443'
      - '22:22'
    volumes:
      - './config:/etc/gitlab'
      - './logs:/var/log/gitlab'
      - './data:/var/opt/gitlab'
    shm_size: '256m'

3. 컨테이너 실행 및 설정 포인트

파일 작성이 완료되었다면 다음 명령어로 컨테이너를 실행합니다.

Bash

docker-compose up -d
  • Volumes (볼륨): 설정, 로그, 데이터를 호스트 디렉토리에 저장하여 컨테이너가 삭제되어도 데이터가 유지되도록 합니다.

  • External URL: 접속할 도메인이나 IP를 명시해야 내부 링크들이 정상적으로 생성됩니다.

  • Shm_size: 공유 메모리 크기를 지정하여 데이터베이스 관련 성능 저하를 방지합니다.

4. 초기 관리자(root) 비밀번호 확인

최신 버전의 GitLab은 보안을 위해 초기 비밀번호를 파일로 별도 저장합니다. 아래 명령어로 비밀번호를 확인하세요.

Bash

docker exec -it <컨테이너_ID> grep 'Password:' /etc/gitlab/initial_root_password

주의: 이 파일은 설치 후 24시간이 지나면 자동으로 삭제되므로 로그인 직후 반드시 비밀번호를 변경하십시오.


🏁 결론: 핵심 요약 및 제언

GitLab을 Docker로 구동하는 방법

GitLab을 Docker로 구동하는 과정은 크게 환경 설정(YAML) -> 실행 -> 초기 비번 확인의 3단계로 요약됩니다.

  1. Docker Compose를 사용하면 설정 관리가 직관적이며 추후 마이그레이션이 매우 쉽습니다.

  2. 데이터 유실 방지를 위해 반드시 볼륨 마운트(/etc, /var/log, /var/opt) 설정을 확인하십시오.

  3. 원활한 환경을 위해 최소 4GB 이상의 RAM 확보가 필수적입니다.

함께 읽어볼 만한 주제:

  • “Let’s Encrypt를 활용한 GitLab HTTPS 보안 설정법”

  • “GitLab Runner를 활용한 Docker 이미지 빌드 자동화(CI/CD)”