FROM phusion/baseimage:0.9.22 MAINTAINER Denys Zhdanov RUN apt-get -y update \ && apt-get -y upgrade \ && apt-get -y install vim \ nginx \ python-dev \ python-flup \ python-pip \ python-ldap \ expect \ git \ memcached \ sqlite3 \ libffi-dev \ libcairo2 \ libcairo2-dev \ python-cairo \ python-rrdtool \ pkg-config \ nodejs \ && rm -rf /var/lib/apt/lists/* # choose a timezone at build-time # use `--build-arg CONTAINER_TIMEZONE=Europe/Brussels` in `docker build` ARG CONTAINER_TIMEZONE ENV DEBIAN_FRONTEND noninteractive RUN if [ ! -z "${CONTAINER_TIMEZONE}" ]; \ then ln -sf /usr/share/zoneinfo/$CONTAINER_TIMEZONE /etc/localtime && \ dpkg-reconfigure -f noninteractive tzdata; \ fi # fix python dependencies (LTS Django and newer memcached/txAMQP) RUN pip install --upgrade pip && \ pip install django==1.8.18 \ python-memcached==1.53 \ txAMQP==0.6.2 ARG version=1.0.2 ARG whisper_version=${version} ARG carbon_version=${version} ARG graphite_version=${version} ARG statsd_version=v0.7.2 # install whisper RUN git clone -b ${whisper_version} --depth 1 https://github.com/graphite-project/whisper.git /usr/local/src/whisper WORKDIR /usr/local/src/whisper RUN python ./setup.py install # install carbon RUN git clone -b ${carbon_version} --depth 1 https://github.com/graphite-project/carbon.git /usr/local/src/carbon WORKDIR /usr/local/src/carbon RUN pip install -r requirements.txt \ && python ./setup.py install # install graphite RUN git clone -b ${graphite_version} --depth 1 https://github.com/graphite-project/graphite-web.git /usr/local/src/graphite-web WORKDIR /usr/local/src/graphite-web RUN pip install -r requirements.txt \ && python ./setup.py install ADD conf/opt/graphite/conf/*.conf /opt/graphite/conf/ ADD conf/opt/graphite/webapp/graphite/local_settings.py /opt/graphite/webapp/graphite/local_settings.py # ADD conf/opt/graphite/webapp/graphite/app_settings.py /opt/graphite/webapp/graphite/app_settings.py WORKDIR /opt/graphite/webapp RUN mkdir -p /var/log/graphite/ \ && PYTHONPATH=/opt/graphite/webapp django-admin.py collectstatic --noinput --settings=graphite.settings # install statsd RUN git clone -b ${statsd_version} https://github.com/etsy/statsd.git /opt/statsd ADD conf/opt/statsd/config.js /opt/statsd/config.js # config nginx RUN rm /etc/nginx/sites-enabled/default ADD conf/etc/nginx/nginx.conf /etc/nginx/nginx.conf ADD conf/etc/nginx/sites-enabled/graphite-statsd.conf /etc/nginx/sites-enabled/graphite-statsd.conf # init django admin ADD conf/usr/local/bin/django_admin_init.exp /usr/local/bin/django_admin_init.exp ADD conf/usr/local/bin/manage.sh /usr/local/bin/manage.sh RUN chmod +x /usr/local/bin/manage.sh && /usr/local/bin/django_admin_init.exp # logging support RUN mkdir -p /var/log/carbon /var/log/graphite /var/log/nginx ADD conf/etc/logrotate.d/graphite-statsd /etc/logrotate.d/graphite-statsd # daemons ADD conf/etc/service/carbon/run /etc/service/carbon/run ADD conf/etc/service/carbon-aggregator/run /etc/service/carbon-aggregator/run ADD conf/etc/service/graphite/run /etc/service/graphite/run ADD conf/etc/service/statsd/run /etc/service/statsd/run ADD conf/etc/service/nginx/run /etc/service/nginx/run # default conf setup ADD conf /etc/graphite-statsd/conf ADD conf/etc/my_init.d/01_conf_init.sh /etc/my_init.d/01_conf_init.sh # cleanup RUN apt-get clean\ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # defaults EXPOSE 80 2003-2004 2023-2024 8125/udp 8126 VOLUME ["/opt/graphite/conf", "/opt/graphite/storage", "/etc/nginx", "/opt/statsd", "/etc/logrotate.d", "/var/log"] WORKDIR / ENV HOME /root CMD ["/sbin/my_init"]