Skip to content
Back to skills

Gradle Docker Jib

ASecurity

Configures and builds optimized Docker images using Google's Jib plugin without Docker daemon or Dockerfile. Use when containerizing Spring Boot microservices, building multi-architecture images, or pushing to registries. Triggers on "setup Jib", "build Docker image", "containerize with Jib", or "multi-arch image". Works with build.gradle.kts and includes Jib plugin setup, multi-module configuration, and CI/CD integration.

  • 666 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added February 8, 2026
devopsgojavakotlinbashspringdockergitci/cdperformancedocumentation

Works with

  • cli

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill gradle-docker-jib --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Gradle Docker Jib?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Gradle Docker Jib
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-gradle-docker-jib/badge)](https://www.skillsdirectory.com/skills/majiayu000-gradle-docker-jib)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: gradle-docker-jib
description: |
  Configures and builds optimized Docker images using Google's Jib plugin without Docker daemon or Dockerfile.
  Use when containerizing Spring Boot microservices, building multi-architecture images,
  or pushing to registries. Triggers on "setup Jib", "build Docker image", "containerize
  with Jib", or "multi-arch image". Works with build.gradle.kts and includes Jib plugin
  setup, multi-module configuration, and CI/CD integration.

---

# Gradle Docker Jib Integration

## Table of Contents

- [Purpose](#purpose)
- [When to Use](#when-to-use)
- [Quick Start](#quick-start)
- [Instructions](#instructions)
- [Requirements](#requirements)
- [See Also](#see-also)

## Purpose

Build Docker images efficiently using Google's Jib plugin without requiring Docker installation, Dockerfiles, or container knowledge. Jib automatically optimizes layers and handles multi-architecture builds for local and registry deployments.

## When to Use

Use this skill when you need to:
- Build Docker images without Docker daemon or Dockerfiles
- Containerize Spring Boot microservices efficiently
- Create multi-architecture images (amd64, arm64) for cloud deployment
- Optimize Docker layer caching for faster builds
- Push images to GCR, Docker Hub, or private registries
- Integrate Docker image building in CI/CD pipelines

## Quick Start

Add Jib plugin to `build.gradle.kts`:

```kotlin
plugins {
    id("com.google.cloud.tools.jib") version "3.4.4"
}

jib {
    from {
        image = "eclipse-temurin:21-jre-alpine"
    }
    to {
        image = "gcr.io/my-project/my-app"
        tags = setOf("latest", project.version.toString())
    }
    container {
        jvmFlags = listOf("-Xmx512m", "-Xms256m")
        ports = listOf("8080")
        user = "nobody"
    }
}
```

Build to local Docker:
```bash
./gradlew jibDockerBuild
```

Build and push to registry:
```bash
./gradlew jib
```

## Instructions

### Step 1: Add Jib Plugin

Add to `build.gradle.kts`:

```kotlin
plugins {
    id("com.google.cloud.tools.jib") version "3.4.4"
}
```

Or in `build.gradle`:
```groovy
plugins {
    id 'com.google.cloud.tools.jib' version '3.4.4'
}
```

### Step 2: Configure Base Image

Choose appropriate base image:

**For Spring Boot (JRE only):**
```kotlin
jib {
    from {
        image = "eclipse-temurin:21-jre-alpine"
        // or for ARM support
        // image = "eclipse-temurin:21-jre"
    }
}
```

**For distroless (minimal):**
```kotlin
jib {
    from {
        image = "gcr.io/distroless/java21-debian12"
    }
}
```

See [references/detailed-guide.md](./references/detailed-guide.md) for base image selection guide.

### Step 3: Configure Target Registry

**Google Container Registry (GCR):**
```kotlin
jib {
    to {
        image = "gcr.io/my-project/my-app"
        tags = setOf("latest", project.version.toString())
    }
}
```

**Docker Hub:**
```kotlin
jib {
    to {
        image = "docker.io/myusername/my-app"
        auth {
            username = System.getenv("DOCKER_USERNAME")
            password = System.getenv("DOCKER_PASSWORD")
        }
    }
}
```

**Private registry:**
```kotlin
jib {
    to {
        image = "registry.company.com/my-app"
        credHelper = "gcr"  // or "ecr-login", "docker-credential-gcr"
    }
}
```

### Step 4: Configure Container Settings

**JVM flags and ports:**
```kotlin
jib {
    container {
        jvmFlags = listOf(
            "-Xmx512m",
            "-Xms256m",
            "-Dspring.profiles.active=prod",
            "-XX:+UseContainerSupport"
        )
        ports = listOf("8080", "8081")
        labels = mapOf(
            "maintainer" to "team@company.com",
            "version" to project.version.toString()
        )
        user = "nobody"
        workingDirectory = "/app"
    }
}
```

**Environment variables:**
```kotlin
jib {
    container {
        environment = mapOf(
            "PORT" to "8080",
            "ENV" to "production"
        )
    }
}
```

See [references/detailed-guide.md](./references/detailed-guide.md) for advanced container configuration.

### Step 5: Configure Multi-Architecture Images

Build for multiple platforms:

```kotlin
jib {
    from {
        image = "eclipse-temurin:21-jre"
        platforms {
            platform {
                architecture = "amd64"
                os = "linux"
            }
            platform {
                architecture = "arm64"
                os = "linux"
            }
        }
    }
}
```

### Step 6: Set Up Authentication

**Using credential helpers:**

```bash
# Install credential helper
gcloud auth configure-docker

# Or for Docker Hub
docker login
```

**Using environment variables:**

```bash
export DOCKER_USERNAME=myuser
export DOCKER_PASSWORD=mypassword
./gradlew jib
```

**In CI/CD:**

```yaml
# GitHub Actions
- name: Build and Push
  run: ./gradlew jib
  env:
    DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
    DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
```

### Step 7: Build Images

**Build to local Docker daemon:**
```bash
./gradlew jibDockerBuild
docker images  # Verify image exists
```

**Build and push to registry:**
```bash
./gradlew jib
```

**Build OCI tar archive:**
```bash
./gradlew jibBuildTar
# Creates build/jib-image.tar
```

### Step 8: Configure Multi-Module Projects

For multi-module projects, configure Jib in specific modules:

```kotlin
// app/build.gradle.kts
plugins {
    id("com.google.cloud.tools.jib")
}

jib {
    to {
        image = "gcr.io/my-project/${project.name}"
    }
    container {
        mainClass = "com.example.app.MainKt"
    }
}

// service-a/build.gradle.kts
plugins {
    id("com.google.cloud.tools.jib")
}

jib {
    to {
        image = "gcr.io/my-project/${project.name}"
    }
}
```

See [references/detailed-guide.md](./references/detailed-guide.md) for complete multi-module setup.

### Step 9: Optimize Build Performance

**Enable caching:**

```kotlin
jib {
    // Use timestamp for better layer caching
    container {
        creationTime = "USE_CURRENT_TIMESTAMP"
    }
}
```

**Skip unchanged layers:**
Jib automatically caches layers by content hash - no configuration needed.

## Requirements

- **Gradle:** 7.0+ (8.11+ recommended)
- **Java:** JDK 11+ (21 recommended)
- **Jib Plugin:** 3.4.4+
- **Authentication:**
  - Docker credential helper (recommended)
  - Environment variables
  - Docker config (~/.docker/config.json)
- **For Local Docker:**
  - Docker daemon running
  - `jibDockerBuild` command
- **For Registry Push:**
  - Valid credentials
  - Network access to registry

## See Also

- [references/detailed-guide.md](./references/detailed-guide.md) - Comprehensive examples, commands reference, troubleshooting, and best practices
- [gradle-ci-cd-integration](../gradle-ci-cd-integration/SKILL.md) - Integrate Jib in CI/CD pipelines
- [Jib Documentation](https://github.com/GoogleContainerTools/jib) - Official Jib docs

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.