소규모 팀용으로 GitLab CE 를 docker-compose 로 띄울 때 흔히 쓰는 저메모리 튜닝 구성을 GitLab 공식 문서 기준으로 점검한 결과다. 검토 대상 구성은 다음과 같다.
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
restart: always
hostname: gitlab.example.com
shm_size: '256m'
mem_limit: 6g
cpus: 3
ports:
- "8929:8929"
- "2224:22"
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.example.com:8929'
nginx['listen_port'] = 8929
nginx['listen_https'] = false
gitlab_rails['gitlab_shell_ssh_port'] = 2224
gitlab_rails['time_zone'] = 'Asia/Seoul'
registry['enable'] = false
prometheus_monitoring['enable'] = false
puma['worker_processes'] = 1
sidekiq['max_concurrency'] = 10
postgresql['shared_buffers'] = "256MB"
volumes:
- ./config:/etc/gitlab
- ./logs:/var/log/gitlab
- ./data:/var/opt/gitlab
networks:
- gitlab
networks:
gitlab:
driver: bridge
| 항목 | 현재값 | 이유 |
|---|---|---|
puma['worker_processes'] |
1 |
공식 문서는 노드당 Puma worker 를 2 미만으로 두지 말라고 명시한다. 최소 2 |
image |
latest |
GitLab 은 major 버전을 건너뛰는 업그레이드를 금지한다. latest 는 업그레이드 경로를 깨뜨릴 수 있으므로 버전을 명시적으로 고정한다 |
external_url 이 HTTP 평문이다. 운영 환경은 HTTPS/TLS 종단을 둔다.mem_limit, cpus 는 Compose v2 에서 legacy 필드다. deploy.resources.limits 를 쓴다.max-size, max-file) 이 없으면 로그가 디스크를 채울 수 있다./var/opt/gitlab/backups 를 별도 볼륨으로 분리한다.TZ=Asia/Seoul 또는 /etc/localtime 마운트가 없다. gitlab_rails['time_zone'] 은 Rails 시간대만 바꾸고 OS 시간은 그대로다.shm_size: '256m' — 공식 권장값과 일치.gitlab_shell_ssh_port = 2224 와 호스트 포트 2224:22 매핑 정합.external_url 포트와 nginx['listen_port'] 일치.mem_limit: 6g — CE 권장 최소(4 GB) 를 넘고 5명 이하 팀에 적합.