summaryrefslogtreecommitdiffstats
path: root/docker/storperf-master/Dockerfile
blob: 25eb956e0b9f69bdb10c37c960d602ea0afbb445 (plain)
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
##############################################################################
# Copyright (c) 2015 EMC and others.
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
#   Docker container for STORPERF
#
# Purpose: docker image for Storperf project
#
# Maintained by Jose Lausuch, Mark Beierl
# Build:
#    $ docker build -t opnfv/storperf-master:tag .
#

ARG ARCH=x86_64
ARG ALPINE_VERSION=v3.6
FROM multiarch/alpine:$ARCH-$ALPINE_VERSION as storperf-builder

LABEL version="5.0" description="OPNFV Storperf Docker container"

ARG BRANCH=master

ENV repos_dir /home/opnfv/repos

RUN apk --no-cache add --update \
    git \
    alpine-sdk \
    linux-headers \
    libaio \
    libaio-dev \
    zlib-dev

# Third party git fetches
RUN git config --global http.sslVerify false
RUN git clone http://git.kernel.dk/fio.git ${repos_dir}/fio
RUN cd ${repos_dir}/fio && git checkout tags/fio-2.99
RUN cd ${repos_dir}/fio && EXTFLAGS="-static" make install

# Build StorPerf

RUN apk --no-cache add --update \
    libffi-dev \
    libressl-dev \
    python \
    py-pip \
    python-dev \
    alpine-sdk \
    linux-headers \
    bash

# Install StorPerf

COPY requirements.pip /storperf/
RUN pip install --upgrade setuptools==33.1.1
RUN pip install -r /storperf/requirements.pip

# Build stripped down StorPerf image

FROM multiarch/alpine:$ARCH-$ALPINE_VERSION as storperf-master

RUN apk --no-cache add --update \
    python \
    bash

COPY --from=storperf-builder /usr/lib/python2.7/site-packages /usr/lib/python2.7/site-packages
COPY --from=storperf-builder /usr/local/bin/fio /usr/local/bin/fio
COPY . /storperf

WORKDIR /storperf
RUN chmod 600 storperf/resources/ssh/storperf_rsa

# ReST API

EXPOSE 5000

# Install Graphite
# Everything from here down will be removed once Graphite/Carbon gets broken
# out into its own container.

RUN apk --no-cache add --update \
    python \
    py-pip \
    python-dev \
    alpine-sdk \
    py-tz \
    nginx \
    cairo \
    supervisor

RUN deluser xfs

RUN pip install \
    gunicorn==17.5 \
    Django==1.6.11 \
    django-tagging==0.3.1 \
    cairocffi \
    constants \
    zope.interface

RUN adduser -S -g www-data -u 33 www-data

RUN pip install whisper==0.9.15
RUN pip install --install-option="--prefix=/var/lib/graphite" --install-option="--install-lib=/var/lib/graphite/lib" carbon==0.9.15
RUN pip install --install-option="--prefix=/var/lib/graphite" --install-option="--install-lib=/var/lib/graphite/webapp" graphite-web==0.9.15

ADD graphite/nginx.conf /etc/nginx/nginx.conf
ADD graphite/local_settings.py /var/lib/graphite/webapp/graphite/local_settings.py
ADD graphite/carbon.conf /var/lib/graphite/conf/carbon.conf
ADD graphite/storage-schemas.conf /var/lib/graphite/conf/storage-schemas.conf
RUN mkdir -p /opt/graphite/storage
RUN ln -s /var/lib/graphite/storage/whisper /opt/graphite/storage/whisper
RUN touch /var/lib/graphite/storage/graphite.db /var/lib/graphite/storage/index
RUN chown -R www-data /var/lib/graphite/storage
RUN chmod 0775 /var/lib/graphite/storage /var/lib/graphite/storage/whisper
RUN chmod 0664 /var/lib/graphite/storage/graphite.db

RUN cd /var/lib/graphite/webapp/graphite && python manage.py syncdb --noinput
ADD graphite/initial_data.json /var/lib/graphite/webapp/graphite/initial_data.json
RUN cd /var/lib/graphite/webapp/graphite && python manage.py syncdb --noinput

RUN mkdir -p /var/log/supervisor

COPY ./supervisord.conf /etc/supervisor/conf.d/supervisord.conf

EXPOSE 8000

# Entry point

CMD ["/usr/bin/supervisord"]