dockerfiles/graphite/Dockerfile

67 lines
2.0 KiB
Docker

#
# Dockerfile for graphite
#
FROM alpine:3
MAINTAINER EasyPi Software Foundation
ENV GRAPHITE_VERSION=1.1.7
ENV GRAPHITE_CONF_DIR=/opt/graphite/conf
ENV GRAPHITE_STORAGE_DIR=/opt/graphite/storage
ENV DJANGO_SETTINGS_MODULE=graphite.settings
ENV PATH=/opt/graphite/bin:$PATH
ENV PYTHONPATH=/opt/graphite/lib:/opt/graphite/webapp
WORKDIR /opt/graphite
RUN set -xe \
&& apk update \
&& apk add build-base \
cairo \
curl \
libffi-dev \
nginx \
python3 \
python3-dev \
&& curl -sSL https://bootstrap.pypa.io/get-pip.py | python3 \
&& pip3 install --no-cache-dir gunicorn supervisor \
&& pip3 install --no-cache-dir --install-option=--prefix=/opt/graphite \
--install-option=--install-lib=/opt/graphite/lib \
whisper==$GRAPHITE_VERSION \
carbon==$GRAPHITE_VERSION \
&& pip3 install --no-cache-dir --install-option=--prefix=/opt/graphite \
--install-option=--install-lib=/opt/graphite/webapp \
graphite-web==$GRAPHITE_VERSION \
&& cd ./webapp \
&& echo "SECRET_KEY = '$(head -c 16 /dev/urandom | base64)'" >> graphite/local_settings.py \
&& cd ../conf \
&& cp carbon.conf.example carbon.conf \
&& cp storage-schemas.conf.example storage-schemas.conf \
&& cp aggregation-rules.conf.example aggregation-rules.conf \
&& cd .. \
&& django-admin collectstatic --noinput \
&& django-admin migrate --noinput --run-syncdb \
&& apk del build-base \
curl \
libffi-dev \
python-dev \
&& rm -rf /root/.cache/pip \
/var/cache/apk/*
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY supervisord.conf /etc/supervisor/
VOLUME $GRAPHITE_CONF_DIR \
$GRAPHITE_STORAGE_DIR
EXPOSE 2003/udp \
2003 \
2004 \
2023 \
2024 \
7002 \
8080 \
9001
CMD ["supervisord", "-n"]