소개
이 포괄적인 튜토리얼에서는 개발 환경의 실시간 모니터링을 위해 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 가 web 및 db 서비스에서 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 에 연결하려면 다음 단계를 따르세요.
- 왼쪽 메뉴에서 "설정" 아이콘을 클릭하고 "데이터 소스"를 선택합니다.
- "데이터 소스 추가" 버튼을 클릭하고 "Prometheus"를 선택합니다.
- Prometheus 데이터 소스를 구성하여 URL 을
http://prometheus:9090으로 설정합니다. - "저장 및 테스트"를 클릭하여 연결을 확인합니다.
대시보드 생성
Grafana 가 Prometheus 에 연결되면 이제 애플리케이션 메트릭을 시각화하기 위한 사용자 정의 대시보드를 만들 수 있습니다. Grafana 는 다양한 기본 시각화 옵션과 사용자 정의 패널 및 대시보드를 만드는 기능을 제공합니다.
Docker Compose, Prometheus, Grafana 를 활용하여 애플리케이션의 실시간 개발을 효과적으로 모니터링하고 성능 및 동작에 대한 귀중한 통찰력을 얻을 수 있습니다.
요약
이 튜토리얼을 마치면 개발 환경의 실시간 모니터링을 위해 Docker Compose 를 사용하는 방법에 대한 확실한 이해를 얻게 될 것입니다. Docker Compose 를 구성하여 애플리케이션의 성능을 추적하고 분석하고, 문제를 식별하며 팀과 더 효과적으로 협업할 수 있게 될 것입니다. "docker compose watch" 기능은 건강하고 효율적인 개발 프로세스를 유지하는 데 필수적인 도구가 될 것입니다.



