From b071b23b024a07b5e0d9f1c915468384369e26af Mon Sep 17 00:00:00 2001 From: Mickael JEZEQUEL Date: Fri, 9 Mar 2018 17:44:34 +0100 Subject: Dockerize rest API for ICE tests Change-Id: I8928203bb76a20fb7d10fd05d06151e2c6b7a934 Issue-ID: VNFSDK-214 Signed-off-by: Mickael JEZEQUEL --- docker/README.MD | 24 +++++ docker/pom.xml | 154 +++++++++++++++++++++++++++++++ docker/src/main/docker/Dockerfile | 29 ++++++ docker/src/main/docker/prod_settings.cfg | 8 ++ docker/src/main/docker/run.sh | 7 ++ 5 files changed, 222 insertions(+) create mode 100644 docker/README.MD create mode 100644 docker/pom.xml create mode 100644 docker/src/main/docker/Dockerfile create mode 100644 docker/src/main/docker/prod_settings.cfg create mode 100644 docker/src/main/docker/run.sh (limited to 'docker') diff --git a/docker/README.MD b/docker/README.MD new file mode 100644 index 0000000..26a793b --- /dev/null +++ b/docker/README.MD @@ -0,0 +1,24 @@ +Introduction: +============= +This document provides the required steps for : +- generating the docker image of the heat validation rest service +- running the rest server. + +Installation steps: +==================== +Install following software: +- maven +- docker + +Configuration steps: +==================== +you can override the defaults settings (declared in default_settings.cfg and prod_settings.cfg) +by setting the env variable with the appropriate values (see Dockerfile for available ENV vars) + +How to run? +=========== +- make sure that the MSB is running +- build the image : +- ``$ mvn -P docker clean package`` +- run the server in DEBUG mode: +- ``$ docker run --rm --name vnfsdk-ice -d -p 5000:5000 -e DEBUG=True -e MSB_ADDR= -e MSB_PORT=80 onap/vnfsdk/ice`` diff --git a/docker/pom.xml b/docker/pom.xml new file mode 100644 index 0000000..ad876b4 --- /dev/null +++ b/docker/pom.xml @@ -0,0 +1,154 @@ + + + 4.0.0 + + + org.onap.oparent + oparent + 0.1.1 + ../../oparent + + + org.onap.vnfsdk.ice + vnf-sdk-ice-docker + 1.0.0-SNAPSHOT + + ice docker image builder + heat validation docker image builder + pom + + + yyyyMMdd-HHmm + + true + true + true + false + false + + + + docker + + false + + + + + io.fabric8 + docker-maven-plugin + 0.16.7 + + true + 1.23 + ${docker.skip} + + + onap/vnfsdk/ice + ice + + try + ${project.basedir}/src/main/docker + + dir + + middleware-rest + + ${project.basedir}/../ice-server + + requirements.txt + README.MD + + ice-server + + + ${project.basedir}/../ice-server/heat_test + + **/*.pyc + **/__pycache__ + + ice-server/heat_test + + + ${project.basedir}/../validation-scripts + + requirements.txt + README.MD + + validation-scripts + + + ${project.basedir}/../validation-scripts/ice_validator + + **/*.pyc + **/__pycache__ + + validation-scripts/ice_validator + + + + + + + + + + clean-images + pre-clean + + remove + + + true + onap/vnfsdk/ice + + + + + generate-images + generate-sources + + build + + + ${docker.skip.build} + + + + push-images + deploy + + build + push + + + onap/vnfsdk/ice + + + + + + + + + + diff --git a/docker/src/main/docker/Dockerfile b/docker/src/main/docker/Dockerfile new file mode 100644 index 0000000..7b3f033 --- /dev/null +++ b/docker/src/main/docker/Dockerfile @@ -0,0 +1,29 @@ +FROM python:3.6.1 + +ENV ICE_SETTINGS /opt/ice/ice-server/heat_test/prod_settings.cfg +ENV DEBUG False +ENV MSB_ADDR "127.0.0.1" +ENV MSB_PORT 80 + +# add application +COPY maven/ /opt/ice +COPY prod_settings.cfg /opt/ice/ice-server/heat_test/ +COPY run.sh /opt/ice/ice-server/heat_test/ + +EXPOSE 5000 + +# install requirements +# Create the group and user to be used in this container +RUN pip install -r /opt/ice/ice-server/requirements.txt &&\ + pip install -r /opt/ice/validation-scripts/requirements.txt &&\ + pip install dumb-init &&\ + groupadd flaskgroup && useradd -m -g flaskgroup -s /bin/bash flask &&\ + chown -R flask:flaskgroup /opt/ice &&\ + chmod +x /opt/ice/ice-server/heat_test/*.sh + +USER flask +WORKDIR /opt/ice/ice-server/heat_test +# use dumb-init to translate SIGTERM to SIGINT +# this is needed to gracefully stop flask (and unregister service properly) +ENTRYPOINT ["dumb-init", "--rewrite", "15:2", "--"] +CMD ["./run.sh"] diff --git a/docker/src/main/docker/prod_settings.cfg b/docker/src/main/docker/prod_settings.cfg new file mode 100644 index 0000000..f623d76 --- /dev/null +++ b/docker/src/main/docker/prod_settings.cfg @@ -0,0 +1,8 @@ +# ICE production settings +DEBUG = False + +# MSB production settings +MSB_ADDR = "127.0.0.1" +MSB_PORT = "80" +MSB_URL = "http://%s:%s/api/microservices/v1/services" % (MSB_ADDR, MSB_PORT) + diff --git a/docker/src/main/docker/run.sh b/docker/src/main/docker/run.sh new file mode 100644 index 0000000..662c8cf --- /dev/null +++ b/docker/src/main/docker/run.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +sed -i "s/DEBUG =.*/DEBUG = ${DEBUG}/g" ${ICE_SETTINGS} +sed -i "s/MSB_ADDR =.*/MSB_ADDR = \"${MSB_ADDR}\"/g" ${ICE_SETTINGS} +sed -i "s/MSB_PORT =.*/MSB_PORT = \"${MSB_PORT}\"/g" ${ICE_SETTINGS} + +/usr/local/bin/python app.py \ No newline at end of file -- cgit 1.2.3-korg