reduce ccsdk-ansible-server image footprint
Project "CIA" scope is to provide smaller and multi architecture docker
images.
This proposition aims to do that for ccsdk-ansible-server.
The current size of this proposal is 139mb compared to the 618Mb image
proposed before (and before actual ansible installation).
Principles used are the following:
1. a "basic" `docker build .` should provide a working image;
2. use the smallest (and multi arch) base image possibe;
3. install necessary stuff only;
4. leverage python best practices for installation;
5. remove installation stuff occuring at run level and move them to
build level.
* Dockerfile is now at the root part;
* ansible configuration file `ansible.cfg` is created and put in
`configuration` folder;
* ansible configuration file `ansible.cfg` is pushed during the
build part with a reproductible process;
* `python` files are on `ansible-server" folder so copying during build
works out of the box;
* yml files are put directly on `ansible-server/Playbooks` so copying
during build works out the box;
* Dockerfile base image is now alpine:3.8;
* `timeout` executable being now from busybox, change in the
command-line call has been made (`--signal` is now `-s` and `-t` is
set before setting the timeout value).
* Only install python and python-pip as alpine package and remove build
dependencies package after use.
* put all python requirements in `requirements.txt` package and launch
pip installation command with this file.
* call directly python main script (`RestServer.py`) as entrypoint and
do the python installation stuff at build time.
- [x] change pom.xml so building parts works
- [ ] consider changing destination folder (`/opt/ansible-server/`) to
the ancient one (`/opt/onap/ccsdk/`) if this is problematic
Change-Id: I5c66f29ca40d9224aef3d230593735b8e0aa1f3b
Issue-ID: INT-816
Signed-off-by: Sylvain Desbureaux <sylvain.desbureaux@orange.com>
diff --git a/ansible-server/pom.xml b/ansible-server/pom.xml
index 29b5e63..cccc7d0 100644
--- a/ansible-server/pom.xml
+++ b/ansible-server/pom.xml
@@ -1,11 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
- <parent>
+ <parent>
<groupId>org.onap.ccsdk.parent</groupId>
<artifactId>odlparent-lite</artifactId>
<version>1.2.1-SNAPSHOT</version>
</parent>
+
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>
<groupId>org.onap.ccsdk.distribution</groupId>
@@ -18,7 +19,7 @@
<properties>
<image.name>onap/ccsdk-ansible-server-image</image.name>
<ccsdk.project.version>${project.version}</ccsdk.project.version>
- <ccsdk.distribution.version>${project.version}</ccsdk.distribution.version>
+ <ccsdk.distribution.version>${project.version}</ccsdk.distribution.version>
<docker.buildArg.https_proxy>${https_proxy}</docker.buildArg.https_proxy>
<maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>
</properties>
@@ -71,49 +72,9 @@
<outputDirectory>${basedir}/target/docker-stage</outputDirectory>
<resources>
<resource>
- <directory>src/main/docker</directory>
+ <directory>src/main</directory>
<includes>
- <include>Dockerfile</include>
- </includes>
- <filtering>true</filtering>
- </resource>
- </resources>
- </configuration>
- </execution>
-
- <execution>
- <id>copy-scripts</id>
- <goals>
- <goal>copy-resources</goal>
- </goals><!-- here the phase you need -->
- <phase>validate</phase>
- <configuration>
- <outputDirectory>${basedir}/target/docker-stage/opt/onap/ccsdk</outputDirectory>
- <resources>
- <resource>
- <directory>src/main/scripts</directory>
- <includes>
- <include>*</include>
- </includes>
- <filtering>false</filtering>
- </resource>
- </resources>
- </configuration>
- </execution>
-
- <execution>
- <id>copy-yml</id>
- <goals>
- <goal>copy-resources</goal>
- </goals><!-- here the phase you need -->
- <phase>validate</phase>
- <configuration>
- <outputDirectory>${basedir}/target/docker-stage/opt/onap/ccsdk/Playbooks</outputDirectory>
- <resources>
- <resource>
- <directory>src/main/yml</directory>
- <includes>
- <include>*</include>
+ <include>**/*</include>
</includes>
<filtering>false</filtering>
</resource>
@@ -137,7 +98,7 @@
<configuration>
<executable>/usr/bin/find</executable>
<arguments>
- <argument>${basedir}/target/docker-stage/opt/onap/ccsdk</argument>
+ <argument>${basedir}/target/docker-stage/ansible-server</argument>
<argument>-name</argument>
<argument>*.py</argument>
<argument>-exec</argument>
@@ -148,26 +109,6 @@
</arguments>
</configuration>
</execution>
- <execution>
- <id>change shell permissions</id>
- <phase>process-sources</phase>
- <goals>
- <goal>exec</goal>
- </goals>
- <configuration>
- <executable>/usr/bin/find</executable>
- <arguments>
- <argument>${basedir}/target/docker-stage/opt/onap/ccsdk</argument>
- <argument>-name</argument>
- <argument>*.sh</argument>
- <argument>-exec</argument>
- <argument>chmod</argument>
- <argument>+x</argument>
- <argument>{}</argument>
- <argument>;</argument>
- </arguments>
- </configuration>
- </execution>
</executions>
</plugin>
</plugins>