Fix minor typo in Dockerfiles
[osm/devops.git] / docker / PLA / Dockerfile
index 8d4350b..e882de8 100644 (file)
@@ -1,4 +1,5 @@
-# Copyright 2020 Arctos Labs Scandinavia AB
+#######################################################################################
+# Copyright ETSI Contributors and Others.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+#######################################################################################
 
-FROM ubuntu:18.04 as INSTALL
+FROM ubuntu:22.04 as INSTALL
+
+ARG APT_PROXY
+RUN if [ ! -z $APT_PROXY ] ; then \
+    echo "Acquire::http::Proxy \"$APT_PROXY\";" > /etc/apt/apt.conf.d/proxy.conf ;\
+    echo "Acquire::https::Proxy \"$APT_PROXY\";" >> /etc/apt/apt.conf.d/proxy.conf ;\
+    fi
 
 RUN DEBIAN_FRONTEND=noninteractive apt-get --yes update && \
     DEBIAN_FRONTEND=noninteractive apt-get --yes install \
-    gcc=4:7.4.* \
-    python3=3.6.* \
-    python3-dev=3.6.* \
-    python3-setuptools=39.0.* \
-    curl=7.58.* && \
-    python3 -m easy_install pip==21.0.1 setuptools==51.0.0
+    gcc=4:11.* \
+    python3=3.10.* \
+    python3-dev=3.10.* \
+    python3-pip=22.0.* \
+    curl=7.81.* \
+    && rm -rf /var/lib/apt/lists/*
+
+#######################################################################################
+# End of common preparation
 
 ARG PYTHON3_OSM_COMMON_URL
 ARG PYTHON3_OSM_PLA_URL
@@ -42,24 +53,53 @@ ADD https://github.com/MiniZinc/MiniZincIDE/releases/download/2.4.2/MiniZincIDE-
 RUN tar -zxf /minizinc.tgz && \
     mv /MiniZincIDE-2.4.2-bundle-linux /minizinc
 
-FROM ubuntu:18.04
-LABEL authors="Lars-Göran Magnusson"
+#######################################################################################
+FROM ubuntu:22.04 as FINAL
+
+ARG APT_PROXY
+RUN if [ ! -z $APT_PROXY ] ; then \
+    echo "Acquire::http::Proxy \"$APT_PROXY\";" > /etc/apt/apt.conf.d/proxy.conf ;\
+    echo "Acquire::https::Proxy \"$APT_PROXY\";" >> /etc/apt/apt.conf.d/proxy.conf ;\
+    fi
 
 RUN DEBIAN_FRONTEND=noninteractive apt-get --yes update && \
-    DEBIAN_FRONTEND=noninteractive apt-get --yes install python3-minimal=3.6.* \
+    DEBIAN_FRONTEND=noninteractive apt-get --yes install \
+    python3-minimal=3.10.* \
     && rm -rf /var/lib/apt/lists/*
 
 COPY --from=INSTALL /usr/lib/python3/dist-packages /usr/lib/python3/dist-packages
-COPY --from=INSTALL /usr/local/lib/python3.6/dist-packages  /usr/local/lib/python3.6/dist-packages
+COPY --from=INSTALL /usr/local/lib/python3.10/dist-packages  /usr/local/lib/python3.10/dist-packages
+
+#######################################################################################
+# End of common preparation
+
+RUN rm -f /etc/apt/apt.conf.d/proxy.conf
+
+LABEL authors="Lars-Göran Magnusson"
+
 COPY --from=INSTALL /usr/bin/osm* /usr/bin/
 COPY --from=INSTALL /minizinc /minizinc
 
-RUN mkdir /entry_data \
-    && mkdir /entry_data/mzn-lib \
-    && ln -s /entry_data/mzn-lib /minizinc/share/minizinc/exec
+RUN mkdir /entry_data && \
+    mkdir /placement && \
+    mkdir /entry_data/mzn-lib && \
+    ln -s /entry_data/mzn-lib /minizinc/share/minizinc/exec
+
+COPY scripts/ /app/osm_pla/scripts/
+
+# Creating the user for the app
+RUN groupadd -g 1000 appuser && \
+    useradd -u 1000 -g 1000 -d /app appuser && \
+    mkdir -p /app/osm_pla && \
+    chown -R appuser:appuser /app && \
+    chown -R appuser:appuser /entry_data && \
+    chown -R appuser:appuser /minizinc && \
+    chown -R appuser:appuser /placement
+
+WORKDIR /app/osm_pla
 
-COPY scripts/ scripts/
-RUN mkdir /placement
+# Changing the security context
+USER appuser
 
 ENV OSMPLA_MESSAGE_DRIVER kafka
 ENV OSMPLA_MESSAGE_HOST kafka
@@ -80,4 +120,4 @@ ENV LD_LIBRARY_PATH "/minizinc/lib:${LD_LIBRARY_PATH}"
 #HEALTHCHECK --start-period=120s --interval=10s --timeout=5s --retries=5 \
 #  CMD osm-pla-healthcheck || exit 1
 
-CMD /bin/bash scripts/start.sh
+CMD [ "/bin/bash", "scripts/start.sh" ]