Docker Compose 를 활용한 실시간 개발 환경 모니터링 가이드

DockerBeginner
지금 연습하기

소개

이 포괄적인 튜토리얼에서는 개발 환경의 실시간 모니터링을 위해 Docker Compose 를 활용하는 방법을 살펴봅니다. Docker Compose 의 강력한 기능을 이해함으로써, 개발 워크플로우를 개선하고 원활한 협업 및 효율적인 문제 해결을 보장하기 위해 이 도구를 구성하고 활용하는 방법을 배울 것입니다.

Docker Compose 이해

Docker Compose 는 여러 컨테이너로 구성된 Docker 애플리케이션을 정의하고 실행할 수 있는 도구입니다. 애플리케이션을 구성하는 서비스, 네트워크, 볼륨을 선언적으로 정의하여 여러 Docker 컨테이너를 관리하고 조정하는 과정을 단순화합니다.

Docker Compose 란 무엇인가요?

Docker Compose 는 애플리케이션을 구성하는 서비스, 네트워크, 볼륨을 기술하는 YAML 기반의 구성 파일입니다. 서로 다른 컨테이너 간의 관계와 상호 작용 방식을 정의할 수 있습니다.

Docker Compose 를 사용하는 이유는 무엇인가요?

여러 Docker 컨테이너로 구성된 애플리케이션을 가질 때 Docker Compose 는 특히 유용합니다. 다음과 같은 이점을 제공합니다.

  • 애플리케이션의 수명주기를 쉽게 관리할 수 있습니다. 개별 서비스를 시작, 중지, 확장할 수 있습니다.
  • 개발, 스테이징, 프로덕션과 같은 서로 다른 환경에서 애플리케이션 서비스가 올바르고 일관되게 구성되었는지 확인할 수 있습니다.
  • 표준화된 방법으로 애플리케이션을 빌드하고 실행하여 배포 프로세스를 단순화합니다.

Docker Compose 시작하기

Docker Compose 를 사용하려면 시스템에 Docker 가 설치되어 있어야 합니다. Docker 가 설치되면 애플리케이션의 서비스를 정의하는 docker-compose.yml 파일을 만들 수 있습니다.

다음은 예시 docker-compose.yml 파일입니다.

version: "3"
services:
  web:
    build: .
    ports:
      - "8000:8000"
  db:
    image: postgres
    environment:
      - POSTGRES_DB=myapp
      - POSTGRES_USER=myuser
      - POSTGRES_PASSWORD=mypassword

이 파일은 웹 서비스와 데이터베이스 서비스 두 가지 서비스를 정의합니다. 웹 서비스는 현재 디렉터리 (.) 에서 빌드되고, 데이터베이스 서비스는 공식 PostgreSQL 이미지를 사용합니다.

애플리케이션을 시작하려면 docker-compose.yml 파일과 같은 디렉터리에서 다음 명령어를 실행할 수 있습니다.

docker-compose up

이렇게 하면 웹 및 데이터베이스 서비스가 시작되고 웹 서비스는 http://localhost:8000에서 접근할 수 있습니다.

Docker Compose 모니터링 설정

Docker Compose 를 사용하여 실시간 개발 모니터링을 활성화하려면 모니터링 도구 및 서비스를 포함하도록 docker-compose.yml 파일을 구성해야 합니다.

모니터링 서비스 추가

Docker 용 인기 있는 모니터링 도구 중 하나는 Prometheus 로, docker-compose.yml 파일에 서비스로 추가할 수 있습니다. 예시는 다음과 같습니다.

version: "3"
services:
  web:
    build: .
    ports:
      - "8000:8000"
  db:
    image: postgres
    environment:
      - POSTGRES_DB=myapp
      - POSTGRES_USER=myuser
      - POSTGRES_PASSWORD=mypassword
  prometheus:
    image: prom/prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    ports:
      - "9090:9090"

이 예시에서는 공식 Prometheus Docker 이미지를 사용하는 prometheus 서비스를 추가했습니다. 또한 prometheus.yml 구성 파일을 마운트했으며, 이 파일은 docker-compose.yml 파일과 같은 디렉터리에 생성해야 합니다.

Prometheus 구성

prometheus.yml 파일은 Prometheus 가 Docker 서비스에서 메트릭을 스크랩하도록 구성하는 데 사용됩니다. 예시 구성은 다음과 같습니다.

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: "web"
    static_configs:
      - targets: ["web:8000"]
  - job_name: "db"
    static_configs:
      - targets: ["db:5432"]

이 구성은 Prometheus 가 webdb 서비스에서 15 초마다 메트릭을 스크랩하도록 지정합니다.

Prometheus UI 접근

Docker Compose 애플리케이션을 시작한 후 웹 브라우저에서 http://localhost:9090으로 이동하여 Prometheus UI 에 접근할 수 있습니다.

Docker Compose 를 이용한 실시간 개발 모니터링

이제 Docker Compose 설정에 Prometheus 를 구성했으므로 애플리케이션의 실시간 개발을 모니터링할 수 있습니다.

Grafana 를 이용한 메트릭 시각화

애플리케이션 성능에 대한 더 포괄적인 보기를 위해 인기 있는 데이터 시각화 도구인 Grafana 를 Prometheus 와 통합할 수 있습니다. docker-compose.yml 파일에 Grafana 를 추가하는 방법은 다음과 같습니다.

version: "3"
services:
  web:
    build: .
    ports:
      - "8000:8000"
  db:
    image: postgres
    environment:
      - POSTGRES_DB=myapp
      - POSTGRES_USER=myuser
      - POSTGRES_PASSWORD=mypassword
  prometheus:
    image: prom/prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    ports:
      - "9090:9090"
  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    volumes:
      - grafana-storage:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=password
volumes:
  grafana-storage:

이 예시에서는 공식 Grafana Docker 이미지를 사용하는 grafana 서비스를 추가했습니다. Grafana 의 구성 및 데이터를 영구적으로 저장하기 위해 grafana-storage라는 이름의 볼륨을 생성했습니다.

Grafana 와 Prometheus 연결

Docker Compose 애플리케이션을 시작한 후 웹 브라우저에서 http://localhost:3000으로 이동하여 Grafana UI 에 접근할 수 있습니다. 기본 사용자 이름과 비밀번호 (admin/password) 를 사용하여 로그인해야 합니다.

Grafana 를 Prometheus 에 연결하려면 다음 단계를 따르세요.

  1. 왼쪽 메뉴에서 "설정" 아이콘을 클릭하고 "데이터 소스"를 선택합니다.
  2. "데이터 소스 추가" 버튼을 클릭하고 "Prometheus"를 선택합니다.
  3. Prometheus 데이터 소스를 구성하여 URL 을 http://prometheus:9090으로 설정합니다.
  4. "저장 및 테스트"를 클릭하여 연결을 확인합니다.

대시보드 생성

Grafana 가 Prometheus 에 연결되면 이제 애플리케이션 메트릭을 시각화하기 위한 사용자 정의 대시보드를 만들 수 있습니다. Grafana 는 다양한 기본 시각화 옵션과 사용자 정의 패널 및 대시보드를 만드는 기능을 제공합니다.

Docker Compose, Prometheus, Grafana 를 활용하여 애플리케이션의 실시간 개발을 효과적으로 모니터링하고 성능 및 동작에 대한 귀중한 통찰력을 얻을 수 있습니다.

요약

이 튜토리얼을 마치면 개발 환경의 실시간 모니터링을 위해 Docker Compose 를 사용하는 방법에 대한 확실한 이해를 얻게 될 것입니다. Docker Compose 를 구성하여 애플리케이션의 성능을 추적하고 분석하고, 문제를 식별하며 팀과 더 효과적으로 협업할 수 있게 될 것입니다. "docker compose watch" 기능은 건강하고 효율적인 개발 프로세스를 유지하는 데 필수적인 도구가 될 것입니다.