[Docker] Integrate the multiple dockerfiles into one
authorWook Song <wook16.song@samsung.com>
Thu, 30 Sep 2021 12:40:37 +0000 (21:40 +0900)
committerjaeyun-jung <39614140+jaeyun-jung@users.noreply.github.com>
Mon, 7 Feb 2022 07:19:32 +0000 (16:19 +0900)
To integrate the multiple dockerfiles into universal one, this patch
introduces the concept of a build-time variable, ARG, and multi-stage
builds in the Dockerfile.

Signed-off-by: Wook Song <wook16.song@samsung.com>
tools/docker/Dockerfile [new file with mode: 0644]

diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile
new file mode 100644 (file)
index 0000000..df9fe6f
--- /dev/null
@@ -0,0 +1,51 @@
+ARG UBUNTU_VER=18.04
+FROM ubuntu:${UBUNTU_VER} AS dev-base
+
+ARG DEBCONF_NOWARNINGS="yes"
+ARG DEBCONF_TERSE="yes"
+ARG LANG="C.UTF-8"
+ARG BUILDDIR=build
+ARG USERNAME=nns
+
+ENV DEBIAN_FRONTEND noninteractive
+
+RUN set -x && \
+    echo "debconf debconf/frontend select ${DEBIAN_FRONTEND}" | debconf-set-selections && \
+    echo 'APT::Install-Recommends "false";' | tee /etc/apt/apt.conf.d/99install-recommends && \
+    echo 'APT::Get::Assume-Yes "true";' | tee /etc/apt/apt.conf.d/99assume-yes && \
+    sed -Ei 's|^(DPkg::Pre-Install-Pkgs .*)|#\1|g' /etc/apt/apt.conf.d/70debconf && \
+    apt-get update && \
+    apt-get install software-properties-common && \
+    add-apt-repository ppa:nnstreamer/ppa -u && \
+    add-apt-repository ppa:one-runtime/ppa -u && \
+    apt-get install \
+        git \
+        build-essential \
+        pkg-config \
+        cmake \
+        ninja-build \
+        flex \
+        bison \
+        meson \
+        equivs \
+        devscripts && \
+    useradd -ms /bin/bash ${USERNAME}
+
+SHELL ["/bin/bash", "-c"]
+USER ${USERNAME}
+WORKDIR /home/${USERNAME}
+RUN git clone https://github.com/nnstreamer/nnstreamer.git
+WORKDIR /home/${USERNAME}/nnstreamer
+RUN mk-build-deps debian/control
+USER root
+RUN apt-get -f install ./nnstreamer-build-deps*.deb && \
+    rm -f ./nnstreamer-build-deps*.deb && \
+    rm -rf /var/lib/apt/lists/*
+USER ${USERNAME}
+RUN meson ${BUILDDIR} && \
+    ninja -C ${BUILDDIR}
+ENV GST_PLUGIN_PATH=/home/${USERNAME}/nnstreamer/${BUILDDIR}/gst/nnstreamer \
+    NNSTREAMER_CONF=/home/${USERNAME}/nnstreamer/${BUILDDIR}/nnstreamer-test.ini \
+    NNSTREAMER_FILTERS=/home/${USERNAME}/nnstreamer/${BUILDDIR}/ext/nnstreamer/tensor_filter \
+    NNSTREAMER_DECODERS=/home/${USERNAME}/nnstreamer/${BUILDDIR}/ext/nnstreamer/tensor_decoder \
+    NNSTREAMER_CONVERTERS=/home/${USERNAME}/nnstreamer/${BUILDDIR}/ext/nnstreamer/tensor_converter