바인딩
읽기전용
설정도커 볼륨 마운트
환경변수 설정
로그 로테이팅
+
sqlite에서 MySQL로 변경
Grafana 도커 가이드
https://grafana.com/docs/grafana/latest/installation/docker/
MySQL 도커 가이드
https://hub.docker.com/_/mysql
공식 docs에서 컨테이너에 필요한 환경변수 등을 확인할 수 있다.
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: grafana/grafana:8.2.2
Grafana 8.2.2 버전 사용
restart:unless-stopped
서버가 재시작되더라도 컨테이너를 재시동
environment:
GF_INSTALL_PLUGINS: grafana-clock-panel
플러그인 추가
ports:
- 3000:3000
3000번 포트 바인딩
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:
driver: "json-file"
options:
max-size: "8m"
max-file: "10"
json형식으로 로그 출력
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로 되어있는것을 볼 수 있다.
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:
- db
db컨테이너가 먼저 생성된 뒤 grafana 컨테이너가 생성되도록 설정
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
볼륨이 삭제되지 않고 남아 있는것을 볼 수 있다.
끝!