diff options
| author | Arseney300 <Arseney300@gmail.com> | 2026-02-20 01:56:33 +0700 |
|---|---|---|
| committer | Arseney300 <Arseney300@gmail.com> | 2026-02-20 01:56:33 +0700 |
| commit | e00ae03be7669e862dd622cc959d2ab67aa1895d (patch) | |
| tree | 9e77c446aad176389c7debafbe721bfc4aca9a9d | |
| parent | 821edeebc818f93e2470613a55dfa7876557e9ab (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/Dockerfile | 24 | ||||
| -rw-r--r-- | jenkins/docker-compose.yaml | 20 |
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 |
