Remove unwanted components from image 71/122171/1
authorkrishnaa96 <krishna.moorthy6@wipro.com>
Thu, 24 Jun 2021 10:42:32 +0000 (16:12 +0530)
committerkrishnaa96 <krishna.moorthy6@wipro.com>
Thu, 24 Jun 2021 10:46:01 +0000 (16:16 +0530)
Remove unwanted linux components from the
docker image and move the common parts to
osdf-base image

Issue-ID: OPTFRA-853
Signed-off-by: krishnaa96 <krishna.moorthy6@wipro.com>
Change-Id: I1b2185781e187526bae114ad718c4758d373cee5

docker/opteng/Dockerfile
docker/opteng/assembly/osdf-files.xml
docker/osdf-lib-base/Dockerfile [new file with mode: 0644]
docker/osdf-lib-base/assembly/osdf-lib-files.xml [new file with mode: 0644]
docker/osdf/Dockerfile
docker/osdf/assembly/osdf-files.xml
pom.xml

index d8ffc4a..037771a 100644 (file)
@@ -1,6 +1,7 @@
 #
 # -------------------------------------------------------------------------
 #   Copyright (c) 2020 AT&T Intellectual Property
+#   Copyright (C) 2021 Wipro Limited.
 #
 #   Licensed under the Apache License, Version 2.0 (the "License");
 #   you may not use this file except in compliance with the License.
 # -------------------------------------------------------------------------
 #
 
-FROM ubuntu:20.04
+FROM osdf-base:latest
 
-ARG MVN_ARTIFACT_VERSION
-ARG REPO
-ARG HTTP_PROXY=${HTTP_PROXY}
-ARG HTTPS_PROXY=${HTTPS_PROXY}
-ARG DEBIAN_FRONTEND=noninteractive
+EXPOSE 8699
 
-ENV http_proxy $HTTP_PROXY
-ENV https_proxy $HTTPS_PROXY
-
-ENV OSDF_PORT "8699"
-EXPOSE ${OSDF_PORT}
-
-RUN apt-get update -y \
-    && apt-get install -y --no-install-recommends software-properties-common wget \
-    curl ca-certificates vim unzip zip git binutils binfmt-support build-essential  \
-    python3 python3-setuptools python3-dev \
-    && ln -s /usr/bin/python3.8 /usr/bin/python \
-    && curl -s https://bootstrap.pypa.io/get-pip.py | python \
-    && python -m pip --no-cache-dir  install --upgrade pip wheel setuptools && rm -rf /var/lib/apt/lists/*
-
-ARG MZN_DL_URL=https://github.com/MiniZinc/MiniZincIDE/releases/download/2.4.3/MiniZincIDE-2.4.3-bundle-linux-x86_64.tgz
-ARG ORTOOLS_URL=https://github.com/google/or-tools/releases/download/v7.8/or-tools_ubuntu-20.04_v7.8.7959.tar.gz
-
-# Minizinc
-RUN wget -q $MZN_DL_URL -O /tmp/mz.tgz \
-    && mkdir -p /mz-dist && tar xzf /tmp/mz.tgz -C /mz-dist --strip-components 1\
-    && rm /tmp/mz.tgz
-
-RUN wget -q ${ORTOOLS_URL} -O /tmp/flatzinc.tar.gz \
-    && mkdir -p /ortools \
-    && tar zxf /tmp/flatzinc.tar.gz -C /ortools --strip-components 1 \
-    && rm /tmp/flatzinc.tar.gz
+# OSDF
+WORKDIR /opt/osdf
 
-ENV SHELL /bin/bash
-ENV PATH /mz-dist/bin:$PATH
+COPY onap-osdf-tm/requirements-opteng.txt /tmp/requirements-opteng.txt
 
-RUN groupadd onap \
-    && useradd -m -g onap onap
+RUN pip install --no-cache-dir -r /tmp/requirements-opteng.txt
 
-# OSDF
-WORKDIR /opt/osdf
-#RUN wget -O /opt/osdf.zip "https://nexus.onap.org/service/local/artifact/maven/redirect?r=releases&g=org.onap.optf.osdf&a=optf-osdf&e=zip&v=1.3.4" && \
-#    unzip -q -o -B /opt/osdf.zip -d /opt/ && \
-#    rm -f /opt/osdf.zip
+COPY onap-osdf-tm/ /opt/osdf
 
-COPY onap-osdf-tm/optf-osdf-${MVN_ARTIFACT_VERSION}.zip /tmp/optf-osdf.zip
-COPY onap-osdf-tm/runtime /opt/osdf/runtime
-COPY onap-osdf-tm/requirements-opteng.txt .
-RUN unzip -q -o -B /tmp/optf-osdf.zip -d /opt/ && rm -f /tmp/optf-osdf.zip
 RUN mkdir -p /var/log/onap/optf/osdf/ \
     && chown onap:onap /var/log/onap -R \
     && chown onap:onap /opt/osdf -R
 
-RUN python -m pip install --no-cache-dir -r requirements.txt -r requirements-opteng.txt
-
 USER onap
 
-CMD [ "/opt/osdf/osdfapp.sh", "-x", "solverapp.py", "-c", "/opt/osdf/config/opteng_config.yaml" ]
+ENV OSDF_CONFIG_FILE "/opt/osdf/config/opteng_config.yaml"
+
+CMD [ "python", "solverapp.py" ]
index 60dd6cc..03a6c45 100644 (file)
                <fileSet>
                        <includes>
                                <include>runtime/**</include>
+                               <include>osdf/**</include>
+                               <include>config/**</include>
+                               <include>setup.py</include>
+                               <include>solverapp.py</include>
                        </includes>
                        <excludes>
                 <exclude>**/*.pyc</exclude>
@@ -50,6 +54,5 @@
                        </includes>
                        <outputDirectory>/</outputDirectory>
                </fileSet>
-
        </fileSets>
 </assembly>
diff --git a/docker/osdf-lib-base/Dockerfile b/docker/osdf-lib-base/Dockerfile
new file mode 100644 (file)
index 0000000..e8de5ab
--- /dev/null
@@ -0,0 +1,49 @@
+#
+# -------------------------------------------------------------------------
+#   Copyright (C) 2021 Wipro Limited.
+#
+#   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.
+#
+# -------------------------------------------------------------------------
+#
+
+FROM python:3.9-slim-buster
+
+ARG HTTP_PROXY=${HTTP_PROXY}
+ARG HTTPS_PROXY=${HTTPS_PROXY}
+ARG DEBIAN_FRONTEND=noninteractive
+
+ENV http_proxy $HTTP_PROXY
+ENV https_proxy $HTTPS_PROXY
+
+RUN groupadd onap \
+    && useradd -m -g onap onap
+
+# Minizinc
+RUN apt-get update \
+    && apt-get install -y wget \
+    && wget -q https://github.com/MiniZinc/MiniZincIDE/releases/download/2.4.3/MiniZincIDE-2.4.3-bundle-linux-x86_64.tgz -O /tmp/mz.tgz \
+    && mkdir -p /mz-dist && tar xzf /tmp/mz.tgz -C /mz-dist --strip-components 1\
+    && rm /tmp/mz.tgz \
+    && wget -q https://github.com/google/or-tools/releases/download/v7.8/or-tools_ubuntu-20.04_v7.8.7959.tar.gz -O /tmp/flatzinc.tar.gz \
+    && mkdir -p /ortools \
+    && tar zxf /tmp/flatzinc.tar.gz -C /ortools --strip-components 1 \
+    && rm /tmp/flatzinc.tar.gz \
+    && apt-get remove -y wget
+
+ENV SHELL /bin/bash
+ENV PATH /mz-dist/bin:$PATH
+
+COPY onap-osdf-tm/requirements.txt /tmp/requirements.txt
+
+RUN pip install --no-cache-dir -r /tmp/requirements.txt
diff --git a/docker/osdf-lib-base/assembly/osdf-lib-files.xml b/docker/osdf-lib-base/assembly/osdf-lib-files.xml
new file mode 100644 (file)
index 0000000..d3cb5dd
--- /dev/null
@@ -0,0 +1,43 @@
+<!--
+       Copyright (C) 2021 Wipro Limited.
+
+    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.
+
+-->
+
+<assembly
+       xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1 http://maven.apache.org/xsd/assembly-1.1.1.xsd">
+       <id>osdf-lib-files</id>
+
+       <formats>
+               <format>tar.gz</format>
+       </formats>
+       <includeBaseDirectory>false</includeBaseDirectory>
+
+
+       <fileSets>
+               <fileSet>
+                       <includes>
+                               <include>requirements.txt</include>
+                       </includes>
+                       <excludes>
+                <exclude>**/*.pyc</exclude>
+                               <exclude>**/__pycache__/**</exclude>
+            </excludes>
+                       <outputDirectory>/</outputDirectory>
+               </fileSet>
+
+       </fileSets>
+</assembly>
index 9d70961..d1fd2c4 100644 (file)
@@ -1,6 +1,7 @@
 #
 # -------------------------------------------------------------------------
 #   Copyright (c) 2018 AT&T Intellectual Property
+#   Copyright (C) 2021 Wipro Limited.
 #
 #   Licensed under the Apache License, Version 2.0 (the "License");
 #   you may not use this file except in compliance with the License.
 # -------------------------------------------------------------------------
 #
 
-FROM ubuntu:20.04
+FROM osdf-base:latest
 
-ARG MVN_ARTIFACT_VERSION
-ARG REPO
-ARG HTTP_PROXY=${HTTP_PROXY}
-ARG HTTPS_PROXY=${HTTPS_PROXY}
-ARG DEBIAN_FRONTEND=noninteractive
-
-ENV http_proxy $HTTP_PROXY
-ENV https_proxy $HTTPS_PROXY
-
-ENV OSDF_PORT "8699"
-EXPOSE ${OSDF_PORT}
-
-RUN apt-get update -y \
-    && apt-get install -y --no-install-recommends software-properties-common wget \
-    curl ca-certificates vim unzip zip git binutils binfmt-support build-essential  \
-    python3 python3-setuptools python3-dev \
-    && ln -s /usr/bin/python3.8 /usr/bin/python \
-    && curl -s https://bootstrap.pypa.io/get-pip.py | python \
-    && python -m pip --no-cache-dir  install --upgrade pip wheel setuptools && rm -rf /var/lib/apt/lists/*
-
-ARG MZN_DL_URL=https://github.com/MiniZinc/MiniZincIDE/releases/download/2.4.3/MiniZincIDE-2.4.3-bundle-linux-x86_64.tgz
-
-# Minizinc
-RUN wget -q $MZN_DL_URL -O /tmp/mz.tgz \
-    && mkdir -p /mz-dist && tar xzf /tmp/mz.tgz -C /mz-dist --strip-components 1\
-    && rm /tmp/mz.tgz
-
-ENV SHELL /bin/bash
-ENV PATH /mz-dist/bin:$PATH
+EXPOSE 8699
 
 # OSDF
 WORKDIR /opt/osdf
-#RUN wget -O /opt/osdf.zip "https://nexus.onap.org/service/local/artifact/maven/redirect?r=releases&g=org.onap.optf.osdf&a=optf-osdf&e=zip&v=1.3.4" && \
-#    unzip -q -o -B /opt/osdf.zip -d /opt/ && \
-#    rm -f /opt/osdf.zip
-RUN groupadd onap \
-    && useradd -m -g onap onap
 
-COPY onap-osdf-tm/optf-osdf-${MVN_ARTIFACT_VERSION}.zip /tmp/optf-osdf.zip
-COPY onap-osdf-tm/apps /opt/osdf/apps
-RUN unzip -q -o -B /tmp/optf-osdf.zip -d /opt/ && rm -f /tmp/optf-osdf.zip
+COPY onap-osdf-tm/requirements-osdf.txt /tmp/requirements-osdf.txt
+
+RUN pip install --no-cache-dir -r /tmp/requirements-osdf.txt
+
+COPY onap-osdf-tm /opt/osdf
 
 RUN mkdir -p /var/log/onap/optf/osdf/ \
     && chown -R onap:onap /var/log/onap \
     && chown -R onap:onap /opt/osdf
 
-RUN python -m pip install --no-cache-dir -r requirements.txt -r requirements-osdf.txt
-
 USER onap
 
-CMD [ "/opt/osdf/osdfapp.sh", "-x", "osdfapp.py" ]
+CMD [ "python", "osdfapp.py" ]
index fc8a864..1b7c349 100644 (file)
 
 
        <fileSets>
-               <fileSet>
-                       <includes>
-                               <include>${project.build.finalName}.zip</include>
-                       </includes>
-                       <directory>${project.build.directory}</directory>
-                       <outputDirectory>/</outputDirectory>
-               </fileSet>
                <fileSet>
                        <includes>
                                <include>apps/**</include>
+                               <include>osdf/**</include>
+                               <include>config/**</include>
+                               <include>setup.py</include>
+                               <include>osdfapp.py</include>
+                               <include>requirements.txt</include>
+                               <include>requirements-osdf.txt</include>
                        </includes>
                        <excludes>
                 <exclude>**/*.pyc</exclude>
diff --git a/pom.xml b/pom.xml
index 42e1f93..6570f55 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -45,6 +45,7 @@ http://maven.apache.org/POM/4.0.0 ">
                <osdf.build.timestamp>${maven.build.timestamp}</osdf.build.timestamp>
                <osdf.project.version>${project.version}</osdf.project.version>
                <osdf.docker.repository>nexus3.onap.org:10003</osdf.docker.repository>
+               <osdf.base.image>osdf-base</osdf.base.image>
                <image.namespace>${osdf.docker.repository}/onap/optf-osdf</image.namespace>
                <opteng.namespace>${osdf.docker.repository}/onap/optf-opteng</opteng.namespace>
        </properties>
@@ -111,6 +112,26 @@ http://maven.apache.org/POM/4.0.0 ">
                                        <verbose>true</verbose>
                                        <apiVersion>1.23</apiVersion>
                                        <images>
+                                               <image>
+                                                       <name>${osdf.base.image}</name>
+                                                       <alias>optf-base</alias>
+                                                       <build>
+                                                               <cleanup>true</cleanup>
+                                                               <tags>
+                                                                       <tag>latest</tag>
+                                                               </tags>
+
+                                                               <dockerFile>${project.basedir}/docker/osdf-lib-base/Dockerfile</dockerFile>
+                                                               <assembly>
+                                                                       <descriptor>${project.basedir}/docker/osdf-lib-base/assembly/osdf-lib-files.xml</descriptor>
+                                                                       <name>onap-osdf-tm</name>
+                                                               </assembly>
+                                                               <args>
+                                                                       <MVN_ARTIFACT_VERSION>${project.version}</MVN_ARTIFACT_VERSION>
+                                                                       <REPO>${project.repo}</REPO>
+                                                               </args>
+                                                       </build>
+                                               </image>
                                                <image>
                                                        <name>${image.namespace}</name>
                                                        <alias>optf-osdf</alias>