Перейти к содержимому

Упакуем grafana в docker

Grafana в docker… пора потратить 5 минут

grafana

В продолжение предыдущей статьи с установкой prometheus в docker, я решил добавить еще пару статей, чтобы привести все это к готовому рабочему виду. Сегодня вслед за prometheus‘ом в «плаванье» отправляется grafana.

Сама по себе grafana воспринимается мной как весьма удобное, легковесное решение визуализации данных собственно с этой позиции я ее и использую.

Без лишних слов давайте сразу перейдем к делу и подготовим Dockerfile.

Выберем базовый образ на котором будем собирать наш сервис:

FROM ubuntu:16.04

Добавим переменную окружения для хранения версии:

ENV version 4.6.2

Скачаем и сохраним по указанному пути архив с grafana (обратите внимание, что здесь в ссылке, аналогично примеру с prometheus, используется переменная в которой содержится значение версии ($version)):

ADD https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-$version.linux-x64.tar.gz /grafana/

Сменим текущую директорию:

WORKDIR /grafana

Сменим текущую директорию:

WORKDIR /grafana/grafana-$version

Распакуем архив с grafana и удалим все лишнее (аналогично ссылке применяем переменную, чтобы в случае необходимости поменять номер версии исправлением одной строки):

RUN tar -zxvf grafana-$version.linux-x64.tar.gz -C ./ && \

rm grafana-$version.linux-x64.tar.gz && \

ln -s /grafana/grafana-$version/bin/grafana-server /usr/bin/

Скопируем папку с конфигурационными файлами (забираем из архива и кладем в директорию с Dockerfile’ом):

COPY conf .

Установим по умолчанию запускать в контейнере grafana:

CMD ["/usr/bin/grafana-server"]

Соберем из Dockerfile docker-образ:

docker build -t grafana .

Сделаем service-скрипт для systemd (делаем это для удобства повседневного использования данного контейнера):

[Unit] Description=grafana in Docker
After=docker.service
Requires=docker.service

[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill grafana
ExecStartPre=-/usr/bin/docker rm grafana
ExecStart=/usr/bin/docker run --net=host --name=grafana -v /mnt/data/Docker/Dockerfiles/grafana/data:/grafana/grafana-4.4.2/data grafana:latest
ExecStop=/usr/bin/docker stop grafana

[Install] WantedBy=multi-user.target
Alias=grafana.service 

Здесь так же как и в prometheus’e я выношу каталог data на хостовую систему, чтобы не потерять информацию при перезапуске контейнера.

Надеюсь данная статья будет кому-нибудь полезна, все ваши предложения и замечания пишите в коментариях.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.