summaryrefslogtreecommitdiffstats
path: root/docker
diff options
context:
space:
mode:
authorMickael JEZEQUEL <mickael.jezequel@orange.com>2018-03-09 17:44:34 +0100
committerMickael JEZEQUEL <mickael.jezequel@orange.com>2018-03-15 13:45:50 +0100
commitb071b23b024a07b5e0d9f1c915468384369e26af (patch)
treeac1ca80e07e1bf2bdffb79d26c37931348dd297a /docker
parentdd79a38607c40db86de950b4c1ecdff443fe68f4 (diff)
Dockerize rest API for ICE tests
Change-Id: I8928203bb76a20fb7d10fd05d06151e2c6b7a934 Issue-ID: VNFSDK-214 Signed-off-by: Mickael JEZEQUEL <mickael.jezequel@orange.com>
Diffstat (limited to 'docker')
-rw-r--r--docker/README.MD24
-rw-r--r--docker/pom.xml154
-rw-r--r--docker/src/main/docker/Dockerfile29
-rw-r--r--docker/src/main/docker/prod_settings.cfg8
-rw-r--r--docker/src/main/docker/run.sh7
5 files changed, 222 insertions, 0 deletions
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=<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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright (c) 2018 Orange. All rights reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may
+not use this file except in compliance with the License. You may obtain
+a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+License for the specific language governing permissions and limitations
+under the License.
+--><project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.onap.oparent</groupId>
+ <artifactId>oparent</artifactId>
+ <version>0.1.1</version>
+ <relativePath>../../oparent</relativePath>
+ </parent>
+
+ <groupId>org.onap.vnfsdk.ice</groupId>
+ <artifactId>vnf-sdk-ice-docker</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+
+ <name>ice docker image builder</name>
+ <description>heat validation docker image builder</description>
+ <packaging>pom</packaging>
+
+ <properties>
+ <maven.build.timestamp.format>yyyyMMdd-HHmm</maven.build.timestamp.format>
+ <docker.push.registry></docker.push.registry>
+ <skip.docker.build>true</skip.docker.build>
+ <skip.docker.tag>true</skip.docker.tag>
+ <skip.docker.push>true</skip.docker.push>
+ <docker.skip>false</docker.skip>
+ <docker.skip.build>false</docker.skip.build>
+ </properties>
+ <profiles>
+ <profile>
+ <id>docker</id>
+ <activation>
+ <activeByDefault>false</activeByDefault>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>io.fabric8</groupId>
+ <artifactId>docker-maven-plugin</artifactId>
+ <version>0.16.7</version>
+ <configuration>
+ <verbose>true</verbose>
+ <apiVersion>1.23</apiVersion>
+ <skipDocker>${docker.skip}</skipDocker>
+ <images>
+ <image>
+ <name>onap/vnfsdk/ice</name>
+ <alias>ice</alias>
+ <build>
+ <cleanup>try</cleanup>
+ <dockerFileDir>${project.basedir}/src/main/docker</dockerFileDir>
+ <assembly>
+ <mode>dir</mode>
+ <inline xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
+ <id>middleware-rest</id>
+ <fileSet>
+ <directory>${project.basedir}/../ice-server</directory>
+ <includes>
+ <include>requirements.txt</include>
+ <include>README.MD</include>
+ </includes>
+ <outputDirectory>ice-server</outputDirectory>
+ </fileSet>
+ <fileSet>
+ <directory>${project.basedir}/../ice-server/heat_test</directory>
+ <excludes>
+ <exclude>**/*.pyc</exclude>
+ <exclude>**/__pycache__</exclude>
+ </excludes>
+ <outputDirectory>ice-server/heat_test</outputDirectory>
+ </fileSet>
+ <fileSet>
+ <directory>${project.basedir}/../validation-scripts</directory>
+ <includes>
+ <include>requirements.txt</include>
+ <include>README.MD</include>
+ </includes>
+ <outputDirectory>validation-scripts</outputDirectory>
+ </fileSet>
+ <fileSet>
+ <directory>${project.basedir}/../validation-scripts/ice_validator</directory>
+ <excludes>
+ <exclude>**/*.pyc</exclude>
+ <exclude>**/__pycache__</exclude>
+ </excludes>
+ <outputDirectory>validation-scripts/ice_validator</outputDirectory>
+ </fileSet>
+ </inline>
+ </assembly>
+ </build>
+ </image>
+ </images>
+ </configuration>
+ <executions>
+ <execution>
+ <id>clean-images</id>
+ <phase>pre-clean</phase>
+ <goals>
+ <goal>remove</goal>
+ </goals>
+ <configuration>
+ <removeAll>true</removeAll>
+ <image>onap/vnfsdk/ice</image>
+ </configuration>
+ </execution>
+
+ <execution>
+ <id>generate-images</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>build</goal>
+ </goals>
+ <configuration>
+ <skipDockerBuild>${docker.skip.build}</skipDockerBuild>
+ </configuration>
+ </execution>
+ <execution>
+ <id>push-images</id>
+ <phase>deploy</phase>
+ <goals>
+ <goal>build</goal>
+ <goal>push</goal>
+ </goals>
+ <configuration>
+ <image>onap/vnfsdk/ice</image>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
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