1. Grafana 구성하기
바로 위에 명시되어 있는대로 실습을 해보도록 하겠습니다. 공식문서는 아래 2개를 참고하였습니다.
https://hub.docker.com/_/mysql
https://grafana.com/docs/grafana/latest/setup-grafana/installation/docker/
우선 실습을 하기 위한 docker-compose.yml파일입니다.
version은 3.9를 이용했습니다.
그리고 크게 db, grafana서비스를 만들어 주었습니다. 또한 volumes으로 mysql의 data가 들어갈 mysql-data 도커볼륨이 있고 grafana-data가 들어갈 도커볼륨이 있게 됩니다.
db의 image는 mysql:5.7로 해주었고, restart으로는 always가 아닌 unless-stopped으로 해주었습니다. 또한 환경변수에는 공식문서에 지정하라고 되어 있는 MYSQL_ROOT_PASSWORD, MYSQL_DATABASE, MYSQL_USER, MYSQL_PASSWORD를 싹다 grafana로 지정해 주었습니다. 그리고 volume을 mysql-data와 /var/lib/mysql와 마운트 해주었고 loggin도 json-file 드라이버를 사용했고, 로그 데이터는 최대 8MB 최대 10개로 설정해 주었습니다.
grafana의 이미지는 공식문서를 참고하여 grafana/grafana:8.22로 지정해 주었습니다. 그리고 의존성을 db로 했습니다. 왜냐면 local에 DB가 있어야 grafana가 돌아갈 수 있기 때문입니다. 그리고 restart옵션은 unless-stopped으로 해주었고 grafana 공식문서에 명시되어 있는 GF_INSTALL_PLUGINS환경변수를 지정해 주었습니다. port는 3000:3000으로 바인딩하였습니다. 또한 grafana의 설정파일을 컨테이너에서 읽기모드로 마운트 하였고 grafana-data 도커 볼륨을 /var/lib/grafana와 연결했습니다. 또한 logging은 db서비스와 동일하게 지정해주었습니다.
또한 grafana의 설정파일인 grafana.ini파일을 살펴보도록 하겠습니다.
database를 자세히보면, type은 기존 sqlite가 아닌 mysql로 지정한 것을 보실 수 있습니다. 그리고 host는 db:3306으로 지정해 주었습니다. 이게 가능한 이유는 docker-compose.yml파일에서 db서비스를 내부에서 discovery해주기 때문입니다. 그래서 db:3306으로 mysql database의 host이름을 적어줄 수 있습니다. 그리고 db의 이름은 grafana로 환경변수로 설정했었고 password도 grafana로 설정했었으며 user의 이름도 grafana로 설정했었습ㅂ니다.
나머지는 기본정보이므로 무시하셔도 괜찮습니다.
이제 이 docker-compose.yml파일을 토대로 docker-compose up을 실행해 보도록 하겠습니다.
컨테이너 2개가 잘 띄워진것을 보실 수 있습니다.
그리고 ec2metadata명령어로 PublicIP를 알아낸 다음에 http://PublicIP:3000으로 접근해보겠습니다.
그리고 초기 이름과 비밀번호인 admin admin을 입력하고 database의 설정이 잘 되었나 확인해보면
host가 잘 설정되었고, type도 default (sqlite ) -> mysql로 바뀐것을 보실 수 있습니다.
마지막으로 이제 도커 볼륨이 잘 작동하나 유저를 하나 더 만들어보고 docker-compose down를 한다음에 다시 docker-compose up을 했을 때, 유저 정보가 남아있는지 확인해보겠습니다.
지웠다가 다시 up시켰습니다. 그리고 로그인창으로 새롭게 추가한 hyunseo계정으로 바로 들어가지는지 확인해 보겠습니다.
ignito모드로 들어간다음에 hyunseo hyunseo를 입력하고 들어갔더니 정확히 잘 들어가지는 것을 보실 수 있을겁니다.
'DevOps > AWS Architecture' 카테고리의 다른 글
[ Docker && Kubernetes ] - 쿠버네티스를 이용한 컨테이너 오케스트레이션: 쿠버네티스 버전과 배포판 (0) | 2022.09.05 |
---|---|
[ Docker && Kubernetes ] - 쿠버네티스를 이용한 컨테이너 오케스트레이션: 쿠버네티스 소개 (0) | 2022.09.05 |
[ Docker && Kubernetes ] - 도커 컨테이너 다루기:명시적으로 여러 컨테이너 관리하기 (0) | 2022.09.04 |
[ Docker && Kubernetes ] - 도커 컨테이너 다루기:도커 데몬 디버깅 (0) | 2022.09.04 |
[ Docker && Kubernetes ] - 도커 컨테이너 다루기:이미지 경량화 전략 (0) | 2022.09.04 |