-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile.grafana
183 lines (149 loc) · 6.3 KB
/
Dockerfile.grafana
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
FROM ubuntu:16.04
MAINTAINER alehandru
ENV term=linux
ENV DEBIAN_FRONTEND=noninteractive
ENV ELASTICSEARCH_VERSION=5.4.1
ENV ES_SKIP_SET_KERNEL_PARAMETERS=true
ENV GRAFANA_VERSION=4.3.2
ENV KIBANA_VERSION=5.4.1
ENV USERNAME=elasticsearch
ENV GROUPNAME=elasticsearch
RUN apt-get update && \
apt-get -y dist-upgrade && \
apt-get install -qy ca-certificates && \
apt-get install -qy apt-utils && \
apt-get update
RUN apt-get -y install software-properties-common
RUN apt-get -y install python-software-properties && \
apt-get -y install python python-pip python-dev && \
apt-get -y install vim mc && \
apt-get -y install git curl wget && \
apt-get -y update
RUN apt-get -y install \
python python-pip python-dev \
python-django-tagging python-simplejson python-memcache \
python-ldap python-cairo python-django python-twisted \
python-pysqlite2 gunicorn && \
pip install urllib3 scandir pyparsing requests
# Install Java.
RUN \
echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
add-apt-repository -y ppa:webupd8team/java && \
apt-get update && \
apt-get install -y oracle-java8-installer && \
apt-get install -y oracle-java8-set-default && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /var/cache/oracle-jdk8-installer
# Define commonly used JAVA_HOME variable
ENV JAVA_HOME /usr/lib/jvm/java-8-oracle
RUN add-apt-repository universe && \
apt-get update && \
apt-get -y install supervisor
RUN apt-get install -y nginx-light
# Fake fuse
RUN apt-get install libfuse2 &&\
cd /tmp ; apt-get download fuse &&\
cd /tmp ; dpkg-deb -x fuse_* . &&\
cd /tmp ; dpkg-deb -e fuse_* &&\
cd /tmp ; rm fuse_*.deb &&\
cd /tmp ; echo -en '#!/bin/bash\nexit 0\n' > DEBIAN/postinst &&\
cd /tmp ; dpkg-deb -b . /fuse.deb &&\
cd /tmp ; dpkg -i /fuse.deb
# Build Whisper
RUN cd /usr/local/src && git clone https://github.com/graphite-project/whisper.git
RUN cd /usr/local/src/whisper && \
git checkout master && \
python setup.py install
# Build Carbon
RUN cd /usr/local/src && git clone https://github.com/graphite-project/carbon.git
RUN cd /usr/local/src/carbon && \
git checkout master && \
python setup.py install
# Build Grafite
RUN cd /usr/local/src && git clone https://github.com/graphite-project/graphite-web.git
RUN cd /usr/local/src/graphite-web && \
git checkout master && \
python check-dependencies.py; python setup.py install
# Install Elastic Search
RUN cd /tmp && \
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${ELASTICSEARCH_VERSION}.tar.gz && \
tar xzvf elasticsearch-${ELASTICSEARCH_VERSION}.tar.gz && \
rm elasticsearch-${ELASTICSEARCH_VERSION}.tar.gz && \
mkdir -p /opt/elasticsearch && \
mv /tmp/elasticsearch-${ELASTICSEARCH_VERSION}/* /opt/elasticsearch && \
mkdir -p /opt/elasticsearch/logs && \
mkdir -p /opt/elasticsearch/data && \
mkdir -p /tmp/elasticsearch
# Create /www directory
RUN mkdir -p /www/data
RUN chown www-data:www-data -R /www
# Install Grafana
RUN cd /tmp && \
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-${GRAFANA_VERSION}.linux-x64.tar.gz && \
tar xzvf grafana-${GRAFANA_VERSION}.linux-x64.tar.gz && \
rm grafana-${GRAFANA_VERSION}.linux-x64.tar.gz && \
mkdir -p /www/data/grafana && \
mv /tmp/grafana-${GRAFANA_VERSION}/* /www/data/grafana && \
chown www-data:www-data -R /www/data/grafana
# Install Kibana
RUN cd /tmp && \
wget https://artifacts.elastic.co/downloads/kibana/kibana-${KIBANA_VERSION}-linux-x86_64.tar.gz && \
tar xzvf kibana-${KIBANA_VERSION}-linux-x86_64.tar.gz && \
rm kibana-${KIBANA_VERSION}-linux-x86_64.tar.gz && \
mkdir -p /www/data/kibana && \
mv /tmp/kibana-${KIBANA_VERSION}-linux-x86_64/* /www/data/kibana && \
chown www-data:www-data -R /www/data/kibana
# Add Graphite config
ADD ./graphite/initial_data.json /opt/graphite/webapp/graphite/initial_data.json
ADD ./graphite/local_settings.py /opt/graphite/webapp/graphite/local_settings.py
ADD ./graphite/carbon.conf /opt/graphite/conf/carbon.conf
ADD ./graphite/storage-schemas.conf /opt/graphite/conf/storage-schemas.conf
ADD ./graphite/storage-aggregation.conf /opt/graphite/conf/storage-aggregation.conf
RUN mkdir -p /opt/graphite/storage/whisper
RUN touch /opt/graphite/storage/graphite.db /opt/graphite/storage/index
RUN chown -R www-data:www-data /opt/graphite
RUN chmod 0775 /opt/graphite/storage /opt/graphite/storage/whisper
RUN chmod 0664 /opt/graphite/storage/graphite.db
RUN cd /opt/graphite/webapp/graphite && \
PYTHONPATH=/opt/graphite/webapp django-admin migrate --settings=graphite.settings --no-initial-data && \
PYTHONPATH=/opt/graphite/webapp DJANGO_SETTINGS_MODULE=graphite.settings python -c "from django.contrib.auth.models import User; User.objects.create_superuser('admin', '[email protected]', 'admin')"
# Configuration for Grafana
ADD ./grafana/ /www/data/grafana/
RUN chown www-data:www-data /www/data/grafana/
# Configuration for Kibana
ADD ./kibana/config.js /www/data/kibana/config.js
RUN chown www-data:www-data /www/data/kibana/config.js
# Configuration for Elasticsearch
ADD ./elasticsearch/run /usr/local/bin/run_elasticsearch
RUN echo 'network.host: _site_' >> /opt/elasticsearch/config/elasticsearch.yml
RUN echo 'http.port: 9200' >> /opt/elasticsearch/config/elasticsearch.yml
RUN echo 'network.bind_host: 0.0.0.0' >> /opt/elasticsearch/config/elasticsearch.yml
# User for Elastic Search
RUN groupadd ${GROUPNAME}
RUN useradd --create-home --home-dir /home/${GROUPNAME} \
--shell /bin/bash \
--gid ${GROUPNAME} \
${USERNAME}
# Set proper directory access rights and owners
RUN chown ${USERNAME}:${GROUPNAME} -R /opt/elasticsearch
RUN chmod 777 -R /tmp
RUN chown -R www-data:www-data /opt/graphite
# ADD system service config
ADD ./nginx/nginx.conf /etc/nginx/nginx.conf
ADD ./supervisord.conf /etc/supervisor/conf.d/supervisord.conf
# Graphite render, es, kibana, grafana
EXPOSE 80
# Graphite
EXPOSE 81
# Carbon line receiver port
EXPOSE 2003
# Carbon pickle receiver port
EXPOSE 2004
# Carbon cache query port
EXPOSE 7002
# Elastic Search port
EXPOSE 9200
VOLUME ["/var/lib/elasticsearch"]
VOLUME ["/opt/graphite/storage/whisper"]
VOLUME ["/var/lib/log/supervisor"]
CMD ["/usr/bin/supervisord"]