aboutsummaryrefslogtreecommitdiffstats
path: root/Dockerfile.jenkins
diff options
context:
space:
mode:
Diffstat (limited to 'Dockerfile.jenkins')
-rw-r--r--Dockerfile.jenkins27
1 files changed, 19 insertions, 8 deletions
diff --git a/Dockerfile.jenkins b/Dockerfile.jenkins
index 874941a..23a95f1 100644
--- a/Dockerfile.jenkins
+++ b/Dockerfile.jenkins
@@ -2,10 +2,12 @@
# Use the official Jenkins image as a base
FROM jenkins/jenkins:lts-jdk17
-# Pass the Docker group ID from the host as a build argument
+# Pass Host User, Group, and Docker Group IDs as build arguments
+ARG UID
+ARG GID
ARG DOCKER_GID
-# Switch to root user to install dependencies
+# Switch to root user to install dependencies and manage users
USER root
# Install Docker CLI so Jenkins can interact with the host's Docker daemon
@@ -18,12 +20,21 @@ RUN echo "deb [arch=$(dpkg --print-architecture) \
$(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
RUN apt-get update && apt-get install -y docker-ce-cli
-# Create a 'docker' group with the host's GID to match permissions
-# This is the key step to prevent the container from exiting
-RUN if [ -n "$DOCKER_GID" ]; then groupadd -g $DOCKER_GID docker; else groupadd -g 999 docker; fi
+# Create a docker group with the host's GID to match permissions
+# and add the jenkins user to it.
+RUN if [ -n "$DOCKER_GID" ]; then \
+ groupadd -g $DOCKER_GID docker && \
+ usermod -aG docker jenkins; \
+ fi
-# Add the 'jenkins' user to the docker group
-RUN usermod -aG docker jenkins
+# Change the jenkins user and group to match the host.
+# This should ensure file permissions for the jenkins_home volume are correct.
+RUN if [ -n "$GID" ] && [ "$(getent group jenkins | cut -d: -f3)" != "$GID" ]; then \
+ groupmod -g $GID jenkins; \
+ fi
+RUN if [ -n "$UID" ] && [ "$(id -u jenkins)" != "$UID" ]; then \
+ usermod -u $UID jenkins; \
+ fi
-# Switch back to the jenkins user
+# Switch to the newly configured jenkins user
USER jenkins