summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormbeierl <mark.beierl@dell.com>2017-07-25 08:31:16 -0400
committermbeierl <mark.beierl@dell.com>2017-07-25 12:59:16 -0400
commit3e30bf5912cbd63a9dfc1977bbc1c900889ebd3c (patch)
treef173f7f38023bfda264d755292fabba5fc81429a
parentd1950be43cd82d1e2c12fff0303ac4d8c0f586e8 (diff)
Switch Container Base to Alpine
Changes the base of StorPerf master docker container to be Alpine based. Compiles FIO statically so no runtime libraries need to be copied to the target VM, just FIO. Change-Id: Ia66dc11442211fc5248103a9f955f48f3186b322 JIRA: STORPERF-174 Signed-off-by: mbeierl <mark.beierl@dell.com>
-rw-r--r--docker/storperf-master/Dockerfile126
-rw-r--r--docker/storperf-master/storperf/storperf_master.py11
-rw-r--r--docker/storperf-master/supervisord.conf2
3 files changed, 84 insertions, 55 deletions
diff --git a/docker/storperf-master/Dockerfile b/docker/storperf-master/Dockerfile
index 8d3ee25..a70e21e 100644
--- a/docker/storperf-master/Dockerfile
+++ b/docker/storperf-master/Dockerfile
@@ -15,48 +15,100 @@
# $ docker build -t opnfv/storperf-master:tag .
#
-FROM ubuntu:14.04
-MAINTAINER Jose Lausuch <jose.lausuch@ericsson.com>
+FROM alpine:3.5 as fio-builder
+
LABEL version="5.0" description="OPNFV Storperf Docker container"
ARG BRANCH=master
ENV repos_dir /home/opnfv/repos
-ENV DEBIAN_FRONTEND noninteractive
-WORKDIR /home/opnfv
+RUN apk --no-cache add --update \
+ python-dev \
+ git \
+ alpine-sdk \
+ linux-headers \
+ libaio \
+ libaio-dev \
+ zlib-dev
+
+# Third party git fetches
-# Needed for Graphite installation
-RUN echo 'deb http://us.archive.ubuntu.com/ubuntu/ trusty universe' >> /etc/apt/sources.list
+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.2.10
+RUN cd ${repos_dir}/fio && EXTFLAGS="-static" make install
+
+# StorPerf Master Builder
+
+FROM alpine:3.5 as storperf-builder
+
+RUN apk --no-cache add --update \
+ libffi-dev \
+ libressl-dev \
+ python \
+ py-pip \
+ python-dev \
+ alpine-sdk \
+ linux-headers \
+ bash
+
+# Install StorPerf
-# Packaged dependencies
-RUN apt-get update && apt-get install -y \
-libaio1 \
-libaio-dev \
-zlib1g-dev \
-supervisor \
-libssl-dev \
-libffi-dev \
-git \
-build-essential \
-python-dev \
-python-pip \
---no-install-recommends
+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 alpine:3.5 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=fio-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
-RUN mkdir -p /root/.ssh
-RUN chmod 700 /root/.ssh
+# Install Graphite
+# Everything from here down will be removed once Graphite/Carbon gets broken
+# out into its own container.
-# Install required packages
+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 apt-get -y install python-ldap python-cairo python-django python-twisted python-django-tagging python-simplejson python-memcache python-pysqlite2 python-support python-tz python-pip gunicorn supervisor nginx-light
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 config
-
ADD graphite/nginx.conf /etc/nginx/nginx.conf
-ADD graphite/initial_data.json /var/lib/graphite/webapp/graphite/initial_data.json
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
@@ -66,29 +118,17 @@ 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
-
-
-# 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.2.10
-RUN cd ${repos_dir}/fio && make install
+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
-# Install StorPerf
+RUN mkdir -p /var/log/supervisor
-COPY . ${repos_dir}/storperf
-RUN chmod 600 ${repos_dir}/storperf/storperf/resources/ssh/storperf_rsa
-RUN pip install --upgrade setuptools==33.1.1
-RUN pip install -r ${repos_dir}/storperf/requirements.pip
COPY ./supervisord.conf /etc/supervisor/conf.d/supervisord.conf
-# Graphite
EXPOSE 8000
-# ReST API
-EXPOSE 5000
+# Entry point
CMD ["/usr/bin/supervisord"]
diff --git a/docker/storperf-master/storperf/storperf_master.py b/docker/storperf-master/storperf/storperf_master.py
index b30d266..866a98e 100644
--- a/docker/storperf-master/storperf/storperf_master.py
+++ b/docker/storperf-master/storperf/storperf_master.py
@@ -381,20 +381,9 @@ class StorPerfMaster(object):
timeout=2)
scp = SCPClient(ssh.get_transport())
- logger.debug("Transferring libaio.so.1 to %s" % slave)
- scp.put('/lib/x86_64-linux-gnu/libaio.so.1', '~/')
logger.debug("Transferring fio to %s" % slave)
scp.put('/usr/local/bin/fio', '~/')
- cmd = 'sudo cp -v libaio.so.1 /lib/x86_64-linux-gnu/libaio.so.1'
- logger.debug("Executing on %s: %s" % (slave, cmd))
- (_, stdout, stderr) = ssh.exec_command(cmd)
-
- for line in stdout.readlines():
- logger.debug(line.strip())
- for line in stderr.readlines():
- logger.error(line.strip())
-
def _make_parameters(self):
heat_parameters = {}
heat_parameters['public_network'] = self.public_network
diff --git a/docker/storperf-master/supervisord.conf b/docker/storperf-master/supervisord.conf
index 9832c49..558f6bf 100644
--- a/docker/storperf-master/supervisord.conf
+++ b/docker/storperf-master/supervisord.conf
@@ -26,7 +26,7 @@ autorestart = true
[program:storperf-webapp]
user = root
-directory = /home/opnfv/repos/storperf/
+directory = /storperf/
command = /usr/bin/python rest_server.py
stdout_logfile = /var/log/supervisor/%(program_name)s.log
stderr_logfile = /var/log/supervisor/%(program_name)s.log