Data Jun 2025. 4. 21. 20:43

여러 개의 Docker 컨테이너를 정의하고 한 번에 실행/관리할 수 있게 해주는 도구

 

예를 들어:

  • GitLab은 단일 컨테이너만으로는 동작하지 않고,
    • GitLab 서버
    • DB(PostgreSQL)
    • Redis 등 여러 컨테이너가 필요한 경우가 많아.

→ 이걸 한 줄로 다루기 위해 사용하는 게 Docker Compose

 

 

왜 사용하는가?

 

 

해당 코드 해석 (docker-compose.yml)

services:
  gitlab:                                # 서비스 이름
    image: gitlab/gitlab-ee:<version>-ee.0   # 사용할 GitLab Docker 이미지
    container_name: gitlab              # 컨테이너 이름
    restart: always                     # 컨테이너 자동 재시작
    hostname: 'gitlab.example.com'      # 도메인명(내부 DNS용)

    environment:
      GITLAB_OMNIBUS_CONFIG: |
        # 추가 설정 가능 (여기에 GitLab 설정)
        external_url 'https://gitlab.example.com'

    ports:
      - '80:80'    # HTTP
      - '443:443'  # HTTPS
      - '22:22'    # SSH (Git over SSH 접근용)

    volumes:
      - '$GITLAB_HOME/config:/etc/gitlab'
      - '$GITLAB_HOME/logs:/var/log/gitlab'
      - '$GITLAB_HOME/data:/var/opt/gitlab'

    shm_size: '256m'  # 공유 메모리 크기 설정 (성능 개선 목적)

 

핵심 요약

  • 이 파일을 통해 GitLab을 Docker 환경에 쉽게 설치 가능
  • docker-compose up -d만 입력하면 GitLab이 자동으로 실행됨
  • external_url, 포트, 볼륨 등을 통해 설정과 데이터 유지가 가능함
  • 여러 설정을 한 곳에 관리하므로 유지보수가 쉬움

 

결론

Docker Compose는 여러 컨테이너 기반 서비스를 정의하고 실행하는 YAML 기반 도구
GitLab처럼 복잡한 애플리케이션을 쉽고 반복 가능하게 배포할 수 있도록 도와줌