From 95eeb8bc924e4d6bbf1d579593e39cc80182f063 Mon Sep 17 00:00:00 2001 From: jkraitbewr Date: Thu, 2 May 2024 11:20:53 -0400 Subject: [PATCH] Improved Dockerfile It was taking a long time build for simple code changes. Made the build multi-stage. To build faster, also reduced image size by about 50%. TEST PLAN PASS: Build image PASS: watcher, o2pubsub, o2api pods running normally on system controller Signed-off-by: jkraitbewr Change-Id: I21cd153b7d4b1b9f97f8be4aa41f8140904e0b81 --- Dockerfile | 132 +++++++++++++++++++++++++++++++------------------------------ 1 file changed, 67 insertions(+), 65 deletions(-) diff --git a/Dockerfile b/Dockerfile index a2628cd..628b3a2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,87 +1,89 @@ -FROM nexus3.onap.org:10001/onap/integration-python:12.0.0 +FROM nexus3.onap.org:10001/onap/integration-python:12.0.0 as build # https://nexus3.onap.org/#browse/search=keyword%3Dintegration-python:d406d405e4cfbf1186265b01088caf9a # https://git.onap.org/integration/docker/onap-python/tree/Dockerfile USER root -ARG user=orano2 -ARG group=orano2 -# Create a group and user -RUN addgroup -S $group && adduser -S -D -h /home/$user $user $group && \ - chown -R $user:$group /home/$user && \ - mkdir /var/log/$user && \ - mkdir -p /src && \ - mkdir -p /configs/ && \ - mkdir -p /src/o2app/ && \ - mkdir -p /src/helm_sdk/ && \ - mkdir -p /etc/o2/ && \ - chown -R $user:$group /var/log/$user && \ - chown -R $user:$group /src && \ - chown -R $user:$group /configs && \ - chown -R $user:$group /etc/o2/ +RUN apk add --no-cache \ + git \ + curl \ + bluez-dev \ + bzip2-dev \ + dpkg-dev dpkg \ + expat-dev \ + gcc \ + libc-dev \ + libffi-dev \ + libnsl-dev \ + libtirpc-dev \ + linux-headers \ + make \ + ncurses-dev \ + openssl-dev \ + pax-utils \ + sqlite-dev \ + tcl-dev \ + tk \ + tk-dev \ + util-linux-dev \ + xz-dev \ + zlib-dev \ + && curl -O https://get.helm.sh/helm-v3.3.1-linux-amd64.tar.gz \ + && tar -zxvf helm-v3.3.1-linux-amd64.tar.gz \ + && cp linux-amd64/helm /usr/local/bin \ + && rm -f helm-v3.3.1-linux-amd64.tar.gz COPY requirements.txt /tmp/ COPY requirements-stx.txt /tmp/ COPY constraints.txt /tmp/ +COPY setup.py /src/ +ENV PATH="/.venv/bin:${PATH}" -COPY o2ims/ /src/o2ims/ -COPY o2dms/ /src/o2dms/ -COPY o2common/ /src/o2common/ -COPY o2app/ /src/o2app/ -COPY setup.py /src/ +RUN mkdir -p /.venv && \ + python -m venv /.venv \ + && pip install --no-cache-dir -r /tmp/requirements.txt -r /tmp/requirements-stx.txt -c /tmp/constraints.txt \ + && pip install --no-cache-dir -e /src + +FROM nexus3.onap.org:10001/onap/integration-python:12.0.0 + +ARG user=orano2 +ARG group=orano2 + +USER root + +RUN apk add --no-cache bash + +COPY --from=build /.venv /.venv +COPY --from=build /src /src + +# Create a group and user +RUN addgroup -S $group \ + && adduser -S -D -h /home/$user $user $group \ + && chown -R $user:$group /home/$user \ + && mkdir /var/log/$user \ + && mkdir -p /src \ + && mkdir -p /configs/ \ + && mkdir -p /src/o2app/ \ + && mkdir -p /src/helm_sdk/ \ + && mkdir -p /etc/o2/ \ + && chown -R $user:$group /var/log/$user \ + && chown -R $user:$group /src \ + && chown -R $user:$group /configs \ + && chown -R $user:$group /etc/o2/ COPY helm_sdk/ /src/helm_sdk/ COPY configs/ /etc/o2/ COPY configs/ /configs/ -RUN set -ex \ - && apk add --no-cache bash \ - && apk add --no-cache --virtual .fetch2-deps \ - git curl \ - && apk add --no-cache --virtual .build2-deps \ - bluez-dev \ - bzip2-dev \ - dpkg-dev dpkg \ - expat-dev \ - gcc \ - libc-dev \ - libffi-dev \ - libnsl-dev \ - libtirpc-dev \ - linux-headers \ - make \ - ncurses-dev \ - openssl-dev \ - pax-utils \ - sqlite-dev \ - tcl-dev \ - tk \ - tk-dev \ - util-linux-dev \ - xz-dev \ - zlib-dev \ - && pip install -r /tmp/requirements.txt -r /tmp/requirements-stx.txt -c /tmp/constraints.txt \ - && curl -O https://get.helm.sh/helm-v3.3.1-linux-amd64.tar.gz; \ - tar -zxvf helm-v3.3.1-linux-amd64.tar.gz; \ - cp linux-amd64/helm /usr/local/bin; \ - rm -f helm-v3.3.1-linux-amd64.tar.gz \ - && pip install -e /src \ - && apk del --no-network .fetch2-deps \ - && apk del --no-network .build2-deps - -# && pip install -r /tmp/requirements.txt -r /tmp/requirements-stx.txt -c /tmp/constraints.txt -# RUN apt-get update && apt-get install -y git gcc procps vim curl ssh -# && git clone --depth 1 --branch r/stx.7.0 https://opendev.org/starlingx/config.git /cgtsclient \ -# && git clone --depth 1 --branch r/stx.7.0 https://opendev.org/starlingx/distcloud-client.git /distcloud-client/ \ -# && git clone --depth 1 --branch r/stx.7.0 https://opendev.org/starlingx/fault.git /faultclient \ -# && pip install -e /cgtsclient/sysinv/cgts-client/cgts-client \ -# && pip install -e /distcloud-client/distributedcloud-client \ -# && pip install -e /faultclient/python-fmclient/fmclient \ -# && rm -rf /cgtsclient /distcloud-client /faultclient +COPY o2common/ /src/o2common/ +COPY o2app/ /src/o2app/ +COPY o2dms/ /src/o2dms/ +COPY o2ims/ /src/o2ims/ WORKDIR /src # USER $user ENV PYTHONHASHSEED=0 +ENV PATH="/.venv/bin:${PATH}" -- 2.16.6