From 751f1ef212ebd1cfd892fa67bfd6dc6ed27ccfd8 Mon Sep 17 00:00:00 2001
From: Yaman Umuroglu <yamanu@xilinx.com>
Date: Tue, 29 Oct 2019 17:30:58 +0000
Subject: [PATCH] [Docker] prototype a non-sudo Docker flow

---
 Dockerfile    | 19 +++++++++++++++++--
 run-docker.sh | 20 +++++++++++++++-----
 2 files changed, 32 insertions(+), 7 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index d68bf0abf..35be4c177 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -15,7 +15,22 @@ RUN rm requirements.txt
 # co-development.
 ENV PYTHONPATH "${PYTHONPATH}:/workspace/finn/src"
 ENV PYTHONPATH "${PYTHONPATH}:/workspace/brevitas_cnv_lfc/training_scripts"
+ENV PYTHONPATH "${PYTHONPATH}:/workspace/brevitas"
 
-WORKDIR /workspace/finn
+ARG GID
+ARG GNAME
+ARG UNAME
+ARG UID
+ARG PASSWD
 
-ENTRYPOINT pip install -e /workspace/brevitas && python setup.py test; /bin/bash
+RUN groupadd -g $GID $GNAME
+RUN useradd -M -u $UID $UNAME -g $GNAME
+RUN usermod -aG sudo $UNAME
+RUN echo "$UNAME:$PASSWD" | chpasswd
+RUN echo "root:$PASSWD" | chpasswd
+RUN ln -s /workspace /home/$UNAME
+RUN chown -R $UNAME:$GNAME /home/$UNAME
+USER $UNAME
+
+WORKDIR /home/$UNAME/finn
+ENTRYPOINT python setup.py test; /bin/bash
diff --git a/run-docker.sh b/run-docker.sh
index 291f89415..bbbbd9a46 100755
--- a/run-docker.sh
+++ b/run-docker.sh
@@ -1,5 +1,12 @@
 #!/bin/sh
 
+DOCKER_GID=$(id -g)
+DOCKER_GNAME=$(id -gn)
+DOCKER_UNAME=$(id -un)
+DOCKER_UID=$(id -u)
+DOCKER_PASSWD="finn"
+DOCKER_TAG="finn_$DOCKER_UNAME"
+
 # Absolute path to this script, e.g. /home/user/bin/foo.sh
 SCRIPT=$(readlink -f "$0")
 # Absolute path this script is in, thus /home/user/bin
@@ -15,17 +22,20 @@ EXAMPLES_LOCAL=$SCRIPTPATH/brevitas_cnv_lfc
 git clone --branch feature/finn_onnx_export $BREVITAS_REPO $BREVITAS_LOCAL ||  git -C "$BREVITAS_LOCAL" pull
 git clone $EXAMPLES_REPO $EXAMPLES_LOCAL ||  git -C "$EXAMPLES_LOCAL" pull
 
-# remove possible temp files created from previous execution
-sudo rm -rf .eggs tests/__pycache__/
-
 echo "Mounting $SCRIPTPATH into /workspace/finn"
 echo "Mounting $SCRIPTPATH/brevitas into /workspace/brevitas"
 echo "Mounting $SCRIPTPATH/brevitas_cnv_lfc into /workspace/brevitas_cnv_lfc"
 # Build the FINN Docker image
-docker build --tag=finn .
+docker build --tag=$DOCKER_TAG \
+             --build-arg GID=$DOCKER_GID \
+             --build-arg GNAME=$DOCKER_GNAME \
+             --build-arg UNAME=$DOCKER_UNAME \
+             --build-arg UID=$DOCKER_UID \
+             --build-arg PASSWD=$DOCKER_PASSWD \
+             .
 # Launch container with current directory mounted
 docker run --rm --name finn_dev -it \
 -v $SCRIPTPATH:/workspace/finn \
 -v $SCRIPTPATH/brevitas:/workspace/brevitas \
 -v $SCRIPTPATH/brevitas_cnv_lfc:/workspace/brevitas_cnv_lfc \
-finn bash
+$DOCKER_TAG bash
-- 
GitLab