Fixing DockerFile to avoid IOException 61/119561/16
authorSingal, Kapil (ks220y) <ks220y@att.com>
Fri, 19 Mar 2021 19:08:22 +0000 (15:08 -0400)
committerKAPIL SINGAL <ks220y@att.com>
Mon, 29 Mar 2021 14:31:39 +0000 (14:31 +0000)
chown on /opt isn't enough as files/directory permissions needs change so that onap user can access to execute
Even if chown onap:onap was done, it was failing to create/run script due to permission issues

Adding noCache to docker-maven-plugin so that it won't pick cached layers

Issue-ID: CCSDK-3224
Signed-off-by: Singal, Kapil (ks220y) <ks220y@att.com>
Change-Id: Idf56465eff6fa42b523bccfca56f84e93496a8d2

12 files changed:
cds-ui/application/Dockerfile
cds-ui/application/pom.xml
cds-ui/server/pom.xml
docs/api-reference/media/cds-bp-processor-api-swagger.json
ms/blueprintsprocessor/application/pom.xml
ms/blueprintsprocessor/application/src/main/docker/Dockerfile
ms/command-executor/pom.xml
ms/command-executor/src/main/docker/Dockerfile
ms/py-executor/docker/Dockerfile
ms/py-executor/pom.xml
ms/sdclistener/distribution/pom.xml
ms/sdclistener/distribution/src/main/docker/Dockerfile

index 5bf65f4..35467e0 100644 (file)
@@ -1,35 +1,47 @@
+# Prepare stage for multistage image build
+## START OF stage0 ##
 # Building client html and js files
-FROM alpine:3.8 as builder
+FROM alpine:3.8 AS stage0
+WORKDIR /opt/cds-ui/client/
 
 RUN apk add --no-cache npm
 
-WORKDIR /opt/cds-ui/client/
-
 COPY client/package.json /opt/cds-ui/client/
-
 RUN npm install
 
 COPY client /opt/cds-ui/client/
-
 RUN npm run build
 
+## END OF STAGE0 ##
 
-# Building and creating server
-FROM alpine:3.8
+##############################################
 
+## START OF stage1 ##
+# Building and creating server
+FROM alpine:3.8 AS stage1
 WORKDIR /opt/cds-ui/
 
 RUN apk add --no-cache npm
 
 COPY server/package.json /opt/cds-ui/
-
 RUN npm install
 
 COPY server /opt/cds-ui/
-COPY --from=builder /opt/cds-ui/server/public /opt/cds-ui/public
-
 RUN npm run build
 
-EXPOSE 3000
+## END OF STAGE1 ##
+
+##############################################
+
+## This will create actual image
+
+FROM alpine:3.8
+WORKDIR /opt/cds-ui/
+
+RUN apk add --no-cache npm
 
+COPY --from=stage0 /opt/cds-ui /opt/cds-ui
+COPY --from=stage1 /opt/cds-ui/server/public /opt/cds-ui/public
+
+EXPOSE 3000
 CMD [ "npm", "start" ]
index 1a184ee..6831c9a 100644 (file)
@@ -75,6 +75,7 @@ limitations under the License.
                                     <name>${image.name}</name>
                                     <build>
                                         <cleanup>try</cleanup>
+                                        <noCache>true</noCache>
                                         <tags>
                                             <tag>${project.docker.latestminortag.version}</tag>
                                             <tag>${project.docker.latestfulltag.version}</tag>
index c8da49b..eefcd88 100644 (file)
@@ -144,6 +144,7 @@ limitations under the License.
                                     <name>${image.name}</name>
                                     <build>
                                         <cleanup>try</cleanup>
+                                        <noCache>true</noCache>
                                         <dockerFileDir>${basedir}</dockerFileDir>
                                         <tags>
                                             <tag>${project.docker.latestminortag.version}</tag>
index b7ba2ea..e8ea932 100644 (file)
             }\r
           }\r
         }\r
+      },\r
+      "delete" : {\r
+        "tags" : [ "Resource configuration" ],\r
+        "summary" : "Delete a resource configuration snapshot identified by resourceId, resourceType, status.",\r
+        "description" : "Delete a resource configuration snapshot, identified by its resourceId and resourceType, and optionally its status, either RUNNING or CANDIDATE.",\r
+        "operationId" : "ResourceConfigSnapshotController_deleteWithResourceIdAndResourceType_DELETE.org.onap.ccsdk.cds.blueprintsprocessor.configs.api",\r
+        "parameters" : [ {\r
+          "name" : "resourceType",\r
+          "in" : "path",\r
+          "description" : "Resource Type associated with the resolution.",\r
+          "required" : true,\r
+          "type" : "string"\r
+        }, {\r
+          "name" : "resourceId",\r
+          "in" : "path",\r
+          "description" : "Resource Id associated with the resolution.",\r
+          "required" : true,\r
+          "type" : "string"\r
+        }, {\r
+          "name" : "status",\r
+          "in" : "path",\r
+          "description" : "Status of the snapshot being deleted.",\r
+          "required" : true,\r
+          "type" : "string"\r
+        } ],\r
+        "responses" : {\r
+          "200" : {\r
+            "description" : "successful operation",\r
+            "schema" : {\r
+              "type" : "object"\r
+            }\r
+          }\r
+        }\r
       }\r
     },\r
     "/api/v1/dictionary" : {\r
     "JsonNode" : {\r
       "type" : "object",\r
       "properties" : {\r
+        "floatingPointNumber" : {\r
+          "type" : "boolean"\r
+        },\r
         "valueNode" : {\r
           "type" : "boolean"\r
         },\r
         "missingNode" : {\r
           "type" : "boolean"\r
         },\r
-        "array" : {\r
+        "pojo" : {\r
           "type" : "boolean"\r
         },\r
-        "object" : {\r
+        "integralNumber" : {\r
           "type" : "boolean"\r
         },\r
-        "nodeType" : {\r
-          "type" : "string",\r
-          "enum" : [ "ARRAY", "BINARY", "BOOLEAN", "MISSING", "NULL", "NUMBER", "OBJECT", "POJO", "STRING" ]\r
-        },\r
-        "pojo" : {\r
+        "textual" : {\r
           "type" : "boolean"\r
         },\r
-        "number" : {\r
+        "binary" : {\r
           "type" : "boolean"\r
         },\r
-        "integralNumber" : {\r
+        "object" : {\r
           "type" : "boolean"\r
         },\r
-        "floatingPointNumber" : {\r
+        "array" : {\r
           "type" : "boolean"\r
         },\r
-        "short" : {\r
+        "null" : {\r
           "type" : "boolean"\r
         },\r
-        "int" : {\r
+        "short" : {\r
           "type" : "boolean"\r
         },\r
-        "long" : {\r
-          "type" : "boolean"\r
+        "nodeType" : {\r
+          "type" : "string",\r
+          "enum" : [ "ARRAY", "BINARY", "BOOLEAN", "MISSING", "NULL", "NUMBER", "OBJECT", "POJO", "STRING" ]\r
         },\r
         "float" : {\r
           "type" : "boolean"\r
         },\r
-        "double" : {\r
+        "number" : {\r
           "type" : "boolean"\r
         },\r
-        "bigDecimal" : {\r
+        "boolean" : {\r
           "type" : "boolean"\r
         },\r
-        "bigInteger" : {\r
+        "int" : {\r
           "type" : "boolean"\r
         },\r
-        "textual" : {\r
+        "double" : {\r
           "type" : "boolean"\r
         },\r
-        "boolean" : {\r
+        "long" : {\r
           "type" : "boolean"\r
         },\r
-        "null" : {\r
+        "bigDecimal" : {\r
           "type" : "boolean"\r
         },\r
-        "binary" : {\r
+        "bigInteger" : {\r
           "type" : "boolean"\r
         }\r
       }\r
     "Page" : {\r
       "type" : "object",\r
       "properties" : {\r
-        "totalPages" : {\r
-          "type" : "integer",\r
-          "format" : "int32"\r
-        },\r
         "totalElements" : {\r
           "type" : "integer",\r
           "format" : "int64"\r
         },\r
-        "number" : {\r
+        "totalPages" : {\r
           "type" : "integer",\r
           "format" : "int32"\r
         },\r
-        "size" : {\r
+        "number" : {\r
           "type" : "integer",\r
           "format" : "int32"\r
         },\r
-        "numberOfElements" : {\r
+        "size" : {\r
           "type" : "integer",\r
           "format" : "int32"\r
         },\r
         "sort" : {\r
           "$ref" : "#/definitions/Sort"\r
         },\r
-        "first" : {\r
-          "type" : "boolean"\r
+        "numberOfElements" : {\r
+          "type" : "integer",\r
+          "format" : "int32"\r
         },\r
-        "last" : {\r
+        "first" : {\r
           "type" : "boolean"\r
         },\r
         "pageable" : {\r
           "$ref" : "#/definitions/Pageable"\r
         },\r
+        "last" : {\r
+          "type" : "boolean"\r
+        },\r
         "empty" : {\r
           "type" : "boolean"\r
         }\r
     "PageBlueprintModelSearch" : {\r
       "type" : "object",\r
       "properties" : {\r
-        "totalPages" : {\r
-          "type" : "integer",\r
-          "format" : "int32"\r
-        },\r
         "totalElements" : {\r
           "type" : "integer",\r
           "format" : "int64"\r
         },\r
-        "number" : {\r
+        "totalPages" : {\r
           "type" : "integer",\r
           "format" : "int32"\r
         },\r
-        "size" : {\r
+        "number" : {\r
           "type" : "integer",\r
           "format" : "int32"\r
         },\r
-        "numberOfElements" : {\r
+        "size" : {\r
           "type" : "integer",\r
           "format" : "int32"\r
         },\r
         "sort" : {\r
           "$ref" : "#/definitions/Sort"\r
         },\r
-        "first" : {\r
-          "type" : "boolean"\r
+        "numberOfElements" : {\r
+          "type" : "integer",\r
+          "format" : "int32"\r
         },\r
-        "last" : {\r
+        "first" : {\r
           "type" : "boolean"\r
         },\r
         "pageable" : {\r
           "$ref" : "#/definitions/Pageable"\r
         },\r
+        "last" : {\r
+          "type" : "boolean"\r
+        },\r
         "empty" : {\r
           "type" : "boolean"\r
         }\r
         "paged" : {\r
           "type" : "boolean"\r
         },\r
-        "unpaged" : {\r
-          "type" : "boolean"\r
-        },\r
         "pageNumber" : {\r
           "type" : "integer",\r
           "format" : "int32"\r
         },\r
+        "unpaged" : {\r
+          "type" : "boolean"\r
+        },\r
         "pageSize" : {\r
           "type" : "integer",\r
           "format" : "int32"\r
     "Sort" : {\r
       "type" : "object",\r
       "properties" : {\r
-        "sorted" : {\r
+        "unsorted" : {\r
           "type" : "boolean"\r
         },\r
-        "unsorted" : {\r
+        "sorted" : {\r
           "type" : "boolean"\r
         },\r
         "empty" : {\r
index db3bb94..701d813 100755 (executable)
                                     <name>${image.name}</name>
                                     <build>
                                         <cleanup>try</cleanup>
+                                        <noCache>true</noCache>
                                         <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir>
                                         <tags>
                                             <tag>${project.docker.latestminortag.version}</tag>
index 876bc35..d4b403e 100755 (executable)
@@ -1,8 +1,11 @@
-FROM onap/ccsdk-alpine-j11-image:1.1.0
-
+# Prepare stage for multistage image build
+## START OF STAGE0 ##
+FROM onap/ccsdk-alpine-j11-image:1.1.2 AS stage0
 USER root
+
 # add entrypoint
-COPY startService.sh /opt/app/onap/blueprints-processor/startService.sh
+COPY *.sh /opt/app/onap/blueprints-processor/
+
 # add application
 COPY @project.build.finalName@-@assembly.id@.tar.gz /source.tar.gz
 
@@ -10,12 +13,20 @@ RUN tar -xzf /source.tar.gz -C /tmp \
  && cp -rf /tmp/@project.build.finalName@/opt / \
  && rm -rf /source.tar.gz \
  && rm -rf /tmp/@project.build.finalName@ \
- && touch /velocity.log \
- && chown onap:onap /velocity.log \
- && chmod 755 /velocity.log \
  && mkdir -p /opt/app/onap/blueprints/deploy \
- && chown onap:onap /opt -R \
- && chmod 755 /opt/app/onap/blueprints-processor/startService.sh
+ && touch /velocity.log \
+ && chown -R onap:onap /opt /velocity.log \
+ && chmod -R 755 /opt /velocity.log
+
+## END OF STAGE0 ##
+
+
+## This will create actual image
+FROM onap/ccsdk-alpine-j11-image:1.1.2
+USER root
+
+COPY --from=stage0 /opt /opt
+COPY --from=stage0 /velocity.log /velocity.log
 
 USER onap
 ENTRYPOINT [ "/opt/app/onap/blueprints-processor/startService.sh" ]
index fbdd386..82998aa 100755 (executable)
                                     <name>${image.name}</name>
                                     <build>
                                         <cleanup>try</cleanup>
+                                        <noCache>true</noCache>
                                         <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir>
                                         <tags>
                                             <tag>${project.docker.latestminortag.version}</tag>
index dcb8afb..3ac758f 100644 (file)
@@ -1,26 +1,24 @@
 FROM python:3.7-slim
-
 USER root
-RUN mkdir -p /opt/app/onap/logs/ && touch /opt/app/onap/logs/application.log
 
 # add entrypoint
-COPY start.sh /opt/app/onap/command-executor/start.sh
+COPY *.sh /opt/app/onap/command-executor/
+
 # add application
 COPY @project.build.finalName@-@assembly.id@.tar.gz /source.tar.gz
 
 RUN tar -xzf /source.tar.gz -C /tmp \
- && cp -rf /tmp/@project.build.finalName@/opt / \
- && rm -rf /source.tar.gz \
- && rm -rf /tmp/@project.build.finalName@ \
- && mkdir -p /opt/app/onap/blueprints/deploy \
- && chmod 755 /opt/app/onap/command-executor/start.sh
-
-VOLUME /opt/app/onap/blueprints/deploy/
+    && cp -rf /tmp/@project.build.finalName@/opt / \
+    && rm -rf /source.tar.gz \
+    && rm -rf /tmp/@project.build.finalName@ \
+    && groupadd -r -g 1000 onap && useradd -r -u 1000 -g onap onap \
+    && mkdir -p /opt/app/onap/blueprints/deploy /opt/app/onap/logs \
+    && touch /opt/app/onap/logs/application.log \
+    && chown -R onap:onap /opt \
+    && chmod -R 755 /opt
 
 RUN python -m pip install --no-cache-dir --upgrade pip setuptools
 RUN pip install --no-cache-dir grpcio==1.20.0 grpcio-tools==1.20.0 virtualenv==16.7.9
 
-RUN groupadd -r -g 1000 onap && useradd -r -u 1000 -g onap onap
-RUN chown onap:onap /opt -R
 USER onap
 ENTRYPOINT /opt/app/onap/command-executor/start.sh
index 26f84af..74e6f5f 100644 (file)
@@ -1,26 +1,24 @@
 FROM python:3.7-slim
-
 USER root
-RUN mkdir -p /opt/app/onap/logs/ && touch /opt/app/onap/logs/application.log
 
 # add entrypoint
-COPY start.sh /opt/app/onap/py-executor/start.sh
+COPY *.sh /opt/app/onap/py-executor/
+
 # add application
 COPY @project.build.finalName@-@assembly.id@.tar.gz /source.tar.gz
 
 RUN tar -xzf /source.tar.gz -C /tmp \
- && cp -rf /tmp/@project.build.finalName@/opt / \
- && rm -rf /source.tar.gz \
- && rm -rf /tmp/@project.build.finalName@ \
- && mkdir -p /opt/app/onap/blueprints/deploy \
- && chmod 755 /opt/app/onap/py-executor/start.sh
-
-VOLUME /opt/app/onap/blueprints/deploy/
+    && cp -rf /tmp/@project.build.finalName@/opt / \
+    && rm -rf /source.tar.gz \
+    && rm -rf /tmp/@project.build.finalName@ \
+    && groupadd -r -g 1000 onap && useradd -r -u 1000 -g onap onap \
+    && mkdir -p /opt/app/onap/blueprints/deploy /opt/app/onap/logs \
+    && touch /opt/app/onap/logs/application.log \
+    && chown -R onap:onap /opt \
+    && chmod -R 755 /opt
 
 RUN python -m pip install --no-cache-dir --upgrade pip setuptools
 RUN pip install --no-cache-dir -r /opt/app/onap/python/requirements/docker.txt
 
-RUN groupadd -r -g 1000 onap && useradd -r -u 1000 -g onap onap
-RUN chown onap:onap /opt -R
 USER onap
 ENTRYPOINT /opt/app/onap/py-executor/start.sh
index 6efb57d..a39767b 100644 (file)
@@ -26,7 +26,7 @@
 
     <artifactId>py-executor</artifactId>
 
-    <name>MS Python Script Executor</name>
+    <name>MS Python Executor</name>
     <description>Micro-service providing python environment with gRPC binding for python script execution</description>
 
     <properties>
                                     <name>${image.name}</name>
                                     <build>
                                         <cleanup>try</cleanup>
+                                        <noCache>true</noCache>
                                         <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir>
                                         <tags>
                                             <tag>${project.docker.latestminortag.version}</tag>
index dd0396a..1f3c6b6 100755 (executable)
                                     <name>${image.name}</name>
                                     <build>
                                         <cleanup>try</cleanup>
+                                        <noCache>true</noCache>
                                         <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir>
                                         <tags>
                                             <tag>${project.docker.latestminortag.version}</tag>
index b9c6109..3b5dc4f 100755 (executable)
@@ -1,8 +1,12 @@
-FROM onap/ccsdk-alpine-j11-image:1.1.0
+# Prepare stage for multistage image build
+## START OF STAGE0 ##
+FROM onap/ccsdk-alpine-j11-image:1.1.2 AS stage0
 
 USER root
+
 # add entrypoint
-COPY startService.sh /opt/app/onap/sdc-listener/startService.sh
+COPY *.sh /opt/app/onap/sdc-listener/
+
 # add application
 COPY @project.build.finalName@-@assembly.id@.tar.gz /source.tar.gz
 
@@ -11,8 +15,17 @@ RUN tar -xzf /source.tar.gz -C /tmp \
  && rm -rf /source.tar.gz \
  && rm -rf /tmp/@project.build.finalName@ \
  && mkdir -p /opt/app/onap/cds-sdc-listener \
- && chown onap:onap /opt -R \
- && chmod 755 /opt/app/onap/sdc-listener/startService.sh
+ && chown -R onap:onap /opt \
+ && chmod -R 755 /opt
+
+## END OF STAGE0 ##
+
+
+## This will create actual image
+FROM onap/ccsdk-alpine-j11-image:1.1.2
+USER root
+
+COPY --from=stage0 /opt /opt
 
 USER onap
 ENTRYPOINT /opt/app/onap/sdc-listener/startService.sh