summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRunar Borge <runar@borge.nu>2019-01-09 13:26:32 +0100
committerRunar Borge <runar@borge.nu>2019-01-09 13:26:32 +0100
commited03c43b2a0f7d6d072bab3ae116e1fa0c217375 (patch)
treefdc1fe0f280cb9548892357f76492346f71aa526
parent88c8b3440bd4e4a31ca86cd5d6e8d23bbc0684e7 (diff)
downloadvyos-build-ed03c43b2a0f7d6d072bab3ae116e1fa0c217375.tar.gz
vyos-build-ed03c43b2a0f7d6d072bab3ae116e1fa0c217375.zip
Change user on docker image to the current owner of the volume directory (GOSU)
Insted of hardcoding the user used to build inside the container it will now be auto configured to be the user UID that owns the vyos-build directory This is done with the gosu utillity and a entrypoint script
-rw-r--r--Dockerfile13
-rwxr-xr-xscripts/docker-entrypoint.sh17
2 files changed, 25 insertions, 5 deletions
diff --git a/Dockerfile b/Dockerfile
index b35997a9..efa7e2bf 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -5,6 +5,7 @@ FROM debian:jessie
RUN echo 'deb http://ftp.debian.org/debian jessie-backports main' | tee -a /etc/apt/sources.list &&\
apt-get update && apt-get install -y \
+ gosu \
vim \
git \
make \
@@ -143,10 +144,12 @@ RUN export LATEST="$(curl -s https://checkpoint-api.hashicorp.com/v1/check/packe
curl -K- | gzip -d > /usr/bin/packer && \
chmod +x /usr/bin/packer
+COPY scripts/docker-entrypoint.sh /usr/local/bin/
# Create vyos_bld user account and enable sudo
-RUN useradd -ms /bin/bash -u 1006 --gid users vyos_bld && \
- usermod -aG sudo vyos_bld && \
- echo "%sudo ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
+#RUN useradd -ms /bin/bash -u 1006 --gid users vyos_bld && \
+# usermod -aG sudo vyos_bld && \
+# echo "%sudo ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
-USER vyos_bld
-WORKDIR /home/vyos_bld
+#USER vyos_bld
+#WORKDIR /home/vyos_bld
+ENTRYPOINT ["docker-entrypoint.sh"]
diff --git a/scripts/docker-entrypoint.sh b/scripts/docker-entrypoint.sh
new file mode 100755
index 00000000..7520a8d9
--- /dev/null
+++ b/scripts/docker-entrypoint.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+set -e
+
+# Use GOSU_USER if its specified, else wirking dir user
+if [ -n "$GOSU_USER" ]; then
+ ID=$GOSU_USER
+else
+ ID=$(stat -c "%u:%g" .)
+fi
+
+# Don't use GOSU if we are root
+if [ ! "$ID" = "0:0" ]; then
+ exec gosu $ID "$@"
+else
+ exec "$@"
+fi