|
1 | | -FROM phusion/baseimage:0.10.0 |
2 | | -MAINTAINER Denys Zhdanov < [email protected]> |
3 | | - |
4 | | -RUN apt-get -y update \ |
5 | | - && apt-get -y upgrade \ |
6 | | - && apt-get -y --force-yes install ca-certificates \ |
7 | | - apt-transport-https \ |
8 | | - wget \ |
9 | | - nginx \ |
10 | | - git \ |
11 | | - sqlite3 \ |
12 | | - libcairo2 \ |
13 | | - libcairo2-dev \ |
14 | | - && curl -s https://packagecloud.io/install/repositories/go-graphite/stable/script.deb.sh | bash \ |
15 | | - && apt-get install -y carbonapi carbonzipper \ |
16 | | - && mkdir /etc/carbonapi/ \ |
17 | | - && rm -rf /var/lib/apt/lists/* |
18 | | - |
19 | | -# install go-carbon |
20 | | -RUN wget https://github.com/lomik/go-carbon/releases/download/v0.12.0/go-carbon_0.12.0_amd64.deb \ |
21 | | - && dpkg -i go-carbon_0.12.0_amd64.deb \ |
22 | | - && rm /go-carbon_0.12.0_amd64.deb \ |
23 | | - && mkdir -p /var/lib/graphite/whisper \ |
24 | | - && mkdir -p /var/lib/graphite/dump \ |
25 | | - && service go-carbon stop |
26 | | - |
27 | | -# install grafana |
28 | | -ADD conf/etc/grafana/grafana.ini /etc/grafana/grafana.ini |
29 | | -ADD conf/etc/grafana/provisioning/datasources/carbonapi.yaml /etc/grafana/provisioning/datasources/carbonapi.yaml |
30 | | -RUN wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_5.0.1_amd64.deb \ |
31 | | - && dpkg -i grafana_5.0.1_amd64.deb \ |
32 | | - && rm /grafana_5.0.1_amd64.deb \ |
33 | | - && service grafana-server restart \ |
34 | | - && sleep 5 \ |
35 | | - && service grafana-server stop \ |
36 | | - && mkdir -p /usr/share/grafana/data \ |
37 | | - && mv -fv /var/lib/grafana/* /usr/share/grafana/data |
38 | | - |
39 | | -# config nginx |
40 | | -RUN rm /etc/nginx/sites-enabled/default |
41 | | -ADD conf/etc/nginx/nginx.conf /etc/nginx/nginx.conf |
42 | | -ADD conf/etc/nginx/sites-enabled/go-graphite.conf /etc/nginx/sites-enabled/go-graphite.conf |
43 | | - |
44 | | -# config go-carbon |
45 | | -ADD conf/etc/go-carbon/go-carbon.conf /etc/go-carbon/go-carbon.conf |
46 | | -ADD conf/etc/go-carbon/storage-aggregation.conf /etc/go-carbon/storage-aggregation.conf |
47 | | -ADD conf/etc/go-carbon/storage-schemas.conf /etc/go-carbon/storage-schemas.conf |
48 | | - |
49 | | -# config carbonapi |
50 | | -ADD conf/etc/carbonapi/carbonapi.yaml /etc/carbonapi/carbonapi.yaml |
51 | | - |
52 | | -# logging support |
53 | | -RUN mkdir -p /var/log/go-carbon /var/log/carbonapi /var/log/nginx |
54 | | -ADD conf/etc/logrotate.d/go-graphite.conf /etc/logrotate.d/go-graphite.conf |
55 | | - |
56 | | -# daemons |
57 | | -ADD conf/etc/service/go-carbon/run /etc/service/go-carbon/run |
58 | | -ADD conf/etc/service/carbonapi/run /etc/service/carbonapi/run |
59 | | -ADD conf/etc/service/grafana/run /etc/service/grafana/run |
60 | | -ADD conf/etc/service/nginx/run /etc/service/nginx/run |
61 | | - |
62 | | -# cleanup |
63 | | -RUN apt-get clean\ |
64 | | - && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* |
65 | | - |
66 | | -# defaults |
67 | | -EXPOSE 80 2003 2004 8080 8081 |
68 | | -VOLUME ["/etc/go-carbon", "/etc/carbonapi", "/var/lib/graphite", "/etc/nginx", "/etc/grafana", "/etc/logrotate.d", "/var/log"] |
| 1 | +# ---------------------- BUILD IMAGE --------------------------------------- |
| 2 | +FROM golang:1-alpine as builder |
| 3 | + |
| 4 | +ENV GOCARBON_VERSION=0.14.0 |
| 5 | +ENV CARBONAPI_VERSION=0.12.6 |
| 6 | +ENV GRAFANA_VERSION=6.4.3 |
| 7 | +ENV GOPATH=/opt/go |
| 8 | + |
| 9 | +RUN \ |
| 10 | + apk update --no-cache && \ |
| 11 | + apk upgrade --no-cache && \ |
| 12 | + apk add g++ git make musl-dev cairo-dev |
| 13 | + |
| 14 | +# Install Grafana |
| 15 | + |
| 16 | +RUN mkdir /tmp/grafana \ |
| 17 | + && wget -P /tmp/ https://dl.grafana.com/oss/release/grafana-${GRAFANA_VERSION}.linux-amd64.tar.gz \ |
| 18 | + && tar xfz /tmp/grafana-${GRAFANA_VERSION}.linux-amd64.tar.gz --strip-components=1 -C /tmp/grafana |
| 19 | + |
| 20 | +# Install go-carbon |
| 21 | + |
| 22 | +WORKDIR ${GOPATH} |
| 23 | + |
| 24 | +RUN \ |
| 25 | + export PATH="${PATH}:${GOPATH}/bin" && \ |
| 26 | + mkdir -p \ |
| 27 | + /var/log/go-carbon && \ |
| 28 | + git clone https://github.com/lomik/go-carbon.git |
| 29 | + |
| 30 | +WORKDIR ${GOPATH}/go-carbon |
| 31 | + |
| 32 | +RUN \ |
| 33 | + export PATH="${PATH}:${GOPATH}/bin" && \ |
| 34 | + git checkout "tags/v${GOCARBON_VERSION}" 2> /dev/null ; \ |
| 35 | + version=$(git describe --tags --always | sed 's/^v//') && \ |
| 36 | + echo "build version: ${version}" && \ |
| 37 | + make && \ |
| 38 | + mv go-carbon /tmp/go-carbon |
| 39 | + |
| 40 | +# Install carbonapi |
| 41 | + |
| 42 | +WORKDIR ${GOPATH} |
| 43 | + |
| 44 | +RUN \ |
| 45 | + export PATH="${PATH}:${GOPATH}/bin" && \ |
| 46 | + mkdir -p \ |
| 47 | + /var/log/carbonapi && \ |
| 48 | + git clone https://github.com/go-graphite/carbonapi.git |
| 49 | + |
| 50 | +WORKDIR ${GOPATH}/carbonapi |
| 51 | + |
| 52 | +RUN \ |
| 53 | + export PATH="${PATH}:${GOPATH}/bin" && \ |
| 54 | + git checkout "tags/${CARBONAPI_VERSION}" 2> /dev/null ; \ |
| 55 | + version=${CARBONAPI_VERSION} && \ |
| 56 | + echo "build version: ${version}" && \ |
| 57 | + make && \ |
| 58 | + mv carbonapi /tmp/carbonapi |
| 59 | + |
| 60 | +# ------------------------------ RUN IMAGE -------------------------------------- |
| 61 | +FROM alpine:3.10 |
| 62 | + |
| 63 | +ENV TZ='Europe/Amsterdam' |
| 64 | + |
| 65 | +COPY --from=builder /tmp/grafana/bin/grafana-cli /usr/bin/grafana-cli |
| 66 | +COPY --from=builder /tmp/grafana/bin/grafana-server /usr/sbin/grafana-server |
| 67 | +COPY --from=builder /tmp/grafana/conf /usr/share/grafana/conf |
| 68 | +COPY --from=builder /tmp/grafana/public /usr/share/grafana/public |
| 69 | +COPY --from=builder /tmp/grafana/tools /usr/share/grafana/tools |
| 70 | +COPY --from=builder /tmp/go-carbon /usr/bin/go-carbon |
| 71 | +COPY --from=builder /tmp/carbonapi /usr/bin/carbonapi |
| 72 | + |
| 73 | +COPY conf/ / |
| 74 | + |
| 75 | +RUN \ |
| 76 | + apk update --no-cache && \ |
| 77 | + apk upgrade --no-cache && \ |
| 78 | + apk add --no-cache --virtual .build-deps \ |
| 79 | + cairo \ |
| 80 | + shadow \ |
| 81 | + tzdata \ |
| 82 | + nginx \ |
| 83 | + runit \ |
| 84 | + dcron \ |
| 85 | + logrotate \ |
| 86 | + libc6-compat \ |
| 87 | + ca-certificates \ |
| 88 | + su-exec \ |
| 89 | + bash \ |
| 90 | + && rm -rf \ |
| 91 | + /etc/nginx/conf.d/default.conf /etc/nginx/sites-enabled/default && \ |
| 92 | + cp "/usr/share/zoneinfo/${TZ}" /etc/localtime && \ |
| 93 | + echo "${TZ}" > /etc/timezone && \ |
| 94 | + /usr/sbin/useradd \ |
| 95 | + --system \ |
| 96 | + -U \ |
| 97 | + -s /bin/false \ |
| 98 | + -c "User for Graphite daemon" \ |
| 99 | + carbon && \ |
| 100 | + mkdir \ |
| 101 | + /var/log/go-carbon && \ |
| 102 | + chown -R carbon:carbon /var/log/go-carbon && \ |
| 103 | + rm -rf \ |
| 104 | + /tmp/* \ |
| 105 | + /var/cache/apk/* |
| 106 | + |
69 | 107 | WORKDIR / |
| 108 | + |
| 109 | +VOLUME ["/etc/go-carbon", "/etc/carbonapi", "/var/lib/graphite", "/etc/nginx", "/etc/grafana", "/etc/logrotate.d", "/var/log"] |
| 110 | + |
70 | 111 | ENV HOME /root |
71 | | -CMD ["/sbin/my_init"] |
| 112 | + |
| 113 | +EXPOSE 80 2003 2003/udp 2004 8080 8081 |
| 114 | + |
| 115 | +CMD ["/entrypoint.sh"] |
0 commit comments