Docker 기초 (17) - 도커 컴포즈 Grafana + MySQL 구축
Grafana 구성하기
요구사항
- Grafana의 3000번 포트는 호스트의 3000번 포트와
바인딩
- Grafana의 설정파일인 grafana.ini는 호스트에서 주입 가능하도록 구성하고
읽기전용
설정 - Grafana의 로컬 데이터 저장 경로를 확인하여
도커 볼륨 마운트
- Grafana의 플러그인 추가 설치를 위한
환경변수 설정
- 로그 드라이버 옵션을 통해
로그 로테이팅
+
- grafana.ini를 통해 database 설정을
sqlite에서 MySQL로 변경
- MySQL 컨테이너를 docker-compose에 db 서비스로 추가
- grafana 서비스가 db 서비스를 database로 연결하도록 구성
- MySQL의 로컬 데이터 저장 경로 확인하여 도커 볼륨 마운트
Grafana 도커 가이드
https://grafana.com/docs/grafana/latest/installation/docker/
MySQL 도커 가이드
https://hub.docker.com/_/mysql
공식 docs에서 컨테이너에 필요한 환경변수 등을 확인할 수 있다.
Grafana Only
docker-compose.yml
version: '3.9'
services:
grafana:
image: grafana/grafana:8.2.2
restart: unless-stopped
environment:
GF_INSTALL_PLUGINS: grafana-clock-panel
ports:
- 3000:3000
volumes:
- ./files/grafana.ini:/etc/grafana/grafana.ini:ro
- grafana-data:/var/lib/grafana
logging:
driver: "json-file"
options:
max-size: "8m"
max-file: "10"
volumes:
grafana-data: {}
image
image: grafana/grafana:8.2.2
Grafana 8.2.2 버전 사용
restart
restart:unless-stopped
서버가 재시작되더라도 컨테이너를 재시동
environment
environment:
GF_INSTALL_PLUGINS: grafana-clock-panel
플러그인 추가
port
ports:
- 3000:3000
3000번 포트 바인딩
volumes
volumes:
- ./files/grafana.ini:/etc/grafana/grafana.ini:ro
설정파일 호스트상의 위치 (./files/grafana.ini)를 컨테이너상의 위치(/etc/grafana/grafana.ini)로 읽기전용(ro)으로 마운트
- grafana-data:/var/lib/grafana
데이터 볼륨 (grafana-data)를 로컬 데이터의 위치(/var/lib/grafana)로 마운트
logging
logging:
driver: "json-file"
options:
max-size: "8m"
max-file: "10"
json형식으로 로그 출력
grafana.ini
app_mode = production
instance_name = ${HOSTNAME}
#################################### Server ####################################
[server]
protocol = http
http_addr =
http_port = 3000
#################################### Database ####################################
; [database]
; type = mysql
; host = db:3306
; name = grafana
; user = grafana
; password = grafana
#################################### Logging ##########################
[log]
mode = console
level = info
#################################### Alerting ############################
[alerting]
enabled = true
예시 파일
docker-compose.yml 과 같은 폴더내에 files라는 폴더 생성 후 파일 생성
명령어 실행
docker-compose up -d
3000번 포트에 정상적으로 실행되어 있다
정상 응답
정상 접속
Grafana의 초기 계정인 admin / admin 으로 접속 후
setting값을 확인하면 db의 타입이 sqlite로 되어있는것을 볼 수 있다.
Grafana + MySQL
docker-compose.yml
version: '3.9'
services:
db:
image: mysql:5.7
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: grafana
MYSQL_DATABASE: grafana
MYSQL_USER: grafana
MYSQL_PASSWORD: grafana
volumes:
- mysql-data:/var/lib/mysql
logging:
driver: "json-file"
options:
max-size: "8m"
max-file: "10"
grafana:
depends_on:
- db
image: grafana/grafana:8.2.2
restart: unless-stopped
environment:
GF_INSTALL_PLUGINS: grafana-clock-panel
ports:
- 3000:3000
volumes:
- ./files/grafana.ini:/etc/grafana/grafana.ini:ro
- grafana-data:/var/lib/grafana
logging:
driver: "json-file"
options:
max-size: "8m"
max-file: "10"
volumes:
mysql-data: {}
grafana-data: {}
db 서비스 추가
depends_on
depends_on:
- db
db컨테이너가 먼저 생성된 뒤 grafana 컨테이너가 생성되도록 설정
grafana.ini
app_mode = production
instance_name = ${HOSTNAME}
#################################### Server ####################################
[server]
protocol = http
http_addr =
http_port = 3000
#################################### Database ####################################
[database]
type = mysql
host = db:3306
name = grafana
user = grafana
password = grafana
#################################### Logging ##########################
[log]
mode = console
level = info
#################################### Alerting ############################
[alerting]
enabled = true
database 부분에 주석을 지워줌
명령어 실행
docker-compose up -d
no matching manifest for linux/arm64/v8 in the manifest list entries
Apple M1 칩셋에서 mysql을 다운받거나 실행시킬 때 이런 에러메세지가 뜬다
정상적으로 실행이 되었다면 grafana에 접속해 db setting을 보면
mysql로 변경된 것을 확인 할 수 있다.
도커 볼륨 확인
데이터의 영속성을 확인하기 위해 Grafana에 새로운 유저를 추가한뒤
컨테이너를 종료시켜 보자
docker-compose down
도커 컴포즈 종료 후
docker volume ls
볼륨이 삭제되지 않고 남아 있는것을 볼 수 있다.
끝!
Author And Source
이 문제에 관하여(Docker 기초 (17) - 도커 컴포즈 Grafana + MySQL 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ghdud0503/Docker-기초-17-도커-컴포즈-Grafana-MySQL-구축저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)