반응형
이번엔 사내 소스형상관리 툴을 SVN에서 Gitlab으로 바꾸게 된 이야기를 해보겠습니다.
GitLab은 소프트웨어 개발 라이프사이클을 관리하는 강력한 도구입니다. Docker Compose를 사용하면 GitLab을 쉽게 설정하고 관리할 수 있습니다. 이 글에서는 Docker Compose 파일의 주요 구성 요소와 설정 옵션에 대해 알아보겠습니다.
Docker Compose 파일 설정 설명
services:
gitlab:
image: 'gitlab/gitlab-ee:17.9.2-ee.0'
container_name: gitlab
restart: always
hostname: 'gitlab.my.co.kr'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.my.co.kr'
gitlab_rails['gitlab_shell_ssh_port'] = 22
prometheus_monitoring['enable'] = false
postgresql['shared_buffers'] = "512MB"
puma['per_worker_max_memory_mb'] = 2048
sidekiq['max_concurrency'] = 10
gitlab_rails['env'] = {
'MALLOC_CONF' => 'dirty_decay_ms:1000,muzzy_decay_ms:1000'
}
gitaly['env'] = {
'MALLOC_CONF' => 'dirty_decay_ms:1000,muzzy_decay_ms:1000'
}
gitlab_rails['initial_root_password'] = '********'
gitlab_rails['allow_local_requests'] = true
gitlab_rails['gitlab_protocol'] = 'http'
gitlab_rails['gitlab_https'] = false
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "0.0.0.0:8181"
TZ: 'Asia/Seoul'
ports:
- '80:80'
- '443:443'
- '22:22'
- '8181:8181' # GitLab Workhorse 포트 추가
volumes:
- './config:/etc/gitlab'
- './logs:/var/log/gitlab'
- './data:/var/opt/gitlab'
기본 서비스 구성
- image: 'gitlab/gitlab-ee:17.9.2-ee.0': GitLab Enterprise Edition 버전 17.9.2를 사용합니다.
- container_name: gitlab: 컨테이너 이름을 'gitlab'으로 지정합니다.
- restart: always: 도커 데몬이 재시작되거나 컨테이너가 중지될 때 항상 자동으로 재시작합니다.
- hostname: 'gitlab.my.co.kr': GitLab 서버의 호스트 이름을 설정합니다.
환경 변수 설정
GitLab의 설정은 GITLAB_OMNIBUS_CONFIG 환경 변수를 통해 이루어집니다:
- external_url 'https:// gitlab.my.co.kr ': GitLab의 외부 URL을 설정합니다.
- gitlab_rails['gitlab_shell_ssh_port'] = 22: SSH 접속 포트를 22번으로 설정합니다.
- prometheus_monitoring['enable'] = false: Prometheus 모니터링을 비활성화합니다.
- postgresql['shared_buffers'] = "512MB": PostgreSQL의 공유 버퍼 크기를 512MB로 설정합니다.
- puma['per_worker_max_memory_mb'] = 2048: Puma 워커당 최대 메모리를 2GB로 제한합니다.
- sidekiq['max_concurrency'] = 10: Sidekiq의 최대 동시 작업 수를 10으로 제한합니다.
- MALLOC_CONF 설정: 메모리 할당자 설정으로, 메모리 사용을 최적화합니다.
- gitlab_rails['initial_root_password'] = '********': 초기 관리자 비밀번호를 설정합니다.
- gitlab_rails['allow_local_requests'] = true: 로컬 요청을 허용합니다.
- gitlab_workhorse['listen_network'] = "tcp" 및 gitlab_workhorse['listen_addr'] = "0.0.0.0:8181": GitLab Workhorse가 모든 인터페이스에서 8181 포트를 통해 TCP 연결을 수신하도록 설정합니다.
- TZ: 'Asia/Seoul': 서버의 시간대를 한국 시간대로 설정합니다.
포트 매핑
컨테이너의 포트를 호스트 시스템의 포트에 매핑합니다:
- 80:80: HTTP 트래픽을 위한 포트입니다.
- 443:443: HTTPS 트래픽을 위한 포트입니다.
- 22:22: SSH 연결을 위한 포트입니다.
- 8181:8181: GitLab Workhorse를 위한 포트입니다.
볼륨 설정
GitLab의 데이터를 호스트 시스템에 저장하기 위한 볼륨을 설정합니다:
- ./config:/etc/gitlab: GitLab 설정 파일을 저장합니다.
- ./logs:/var/log/gitlab: 로그 파일을 저장합니다.
- ./data:/var/opt/gitlab: GitLab 데이터를 저장합니다.
주의사항
- 보안: 위 설정에서 비밀번호가 평문으로 노출되어 있었으나, 실제 운영 환경에서는 이를 환경 변수나 Docker 시크릿으로 관리하는 것이 좋습니다.
- 리소스 관리: 메모리 사용량을 최적화하기 위한 설정들이 포함되어 있습니다. 실제 운영 환경에서는 서버의 사양에 맞게 조정이 필요할 수 있습니다.
- 백업 계획: 데이터 보존을 위해 정기적인 백업 계획을 수립하는 것이 중요합니다.
- 버전 선택: 버전 선택은 신중히 하시길 권고 드립니다. 취약점 보완된 최신 버전 중 stable한 버전으로 선택하시고, CE보다는 EE가 나중에 무료에서 유료로 전환한다고 했을 때 좀 더 편하게 마이그레이션 할 수 있습니다.
반응형
'Web' 카테고리의 다른 글
XML에 대해 알아보자 (0) | 2022.02.04 |
---|---|
로드밸런서(Load Balancer)란 (0) | 2022.01.13 |