summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArseney300 <Arseney300@gmail.com>2026-02-20 01:56:33 +0700
committerArseney300 <Arseney300@gmail.com>2026-02-20 01:56:33 +0700
commite00ae03be7669e862dd622cc959d2ab67aa1895d (patch)
tree9e77c446aad176389c7debafbe721bfc4aca9a9d
parent821edeebc818f93e2470613a55dfa7876557e9ab (diff)
Add Jenkins stack with Docker-out-of-Docker support
- Dockerfile extends jenkins:lts with Docker CLI and docker-workflow plugin so Jenkins can spawn sibling build containers via host's docker.sock - docker-compose.yaml mounts docker.sock, persists jenkins_home, uses --prefix=/jenkins for path-based access Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
-rw-r--r--jenkins/Dockerfile24
-rw-r--r--jenkins/docker-compose.yaml20
2 files changed, 44 insertions, 0 deletions
diff --git a/jenkins/Dockerfile b/jenkins/Dockerfile
new file mode 100644
index 0000000..74ba470
--- /dev/null
+++ b/jenkins/Dockerfile
@@ -0,0 +1,24 @@
+FROM jenkins/jenkins:lts
+
+USER root
+
+# Install Docker CLI so Jenkins can spawn sibling containers via host's docker.sock
+RUN apt-get update && apt-get install -y \
+ ca-certificates \
+ curl \
+ gnupg \
+ && install -m 0755 -d /etc/apt/keyrings \
+ && curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc \
+ && chmod a+r /etc/apt/keyrings/docker.asc \
+ && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list \
+ && apt-get update \
+ && apt-get install -y docker-ce-cli \
+ && rm -rf /var/lib/apt/lists/*
+
+# Add jenkins user to docker group so it can use docker.sock
+RUN groupadd -f docker && usermod -aG docker jenkins
+
+USER jenkins
+
+# Pre-install Docker Pipeline plugin (enables agent { docker { image '...' } } in Jenkinsfiles)
+RUN jenkins-plugin-cli --plugins "docker-workflow"
diff --git a/jenkins/docker-compose.yaml b/jenkins/docker-compose.yaml
new file mode 100644
index 0000000..fbdd78b
--- /dev/null
+++ b/jenkins/docker-compose.yaml
@@ -0,0 +1,20 @@
+services:
+
+ jenkins:
+ build: .
+ restart: always
+ container_name: jenkins
+ environment:
+ - JENKINS_OPTS=--prefix=/jenkins
+ ports:
+ - 8080:8080
+ - 50000:50000
+ volumes:
+ - /var/jenkins_home:/var/jenkins_home
+ - /var/run/docker.sock:/var/run/docker.sock
+ networks:
+ - jenkins_network
+
+networks:
+ jenkins_network:
+ name: jenkins_network