gradle-docker-jib
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.
What this skill does
# 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 "[email protected]",
"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
Related in Image & Video
watch
IncludedWatch a video (URL or local path). Downloads with yt-dlp, extracts auto-scaled frames with ffmpeg, pulls the transcript from captions (or Whisper API fallback), and hands the result to Claude so it can answer questions about what's in the video.
physical-ai-defect-image-generation
IncludedUse when the user wants to orchestrate defect image generation, run associated setup, or handle outputs on OSMO. The Day 0 path handles cold-start with USD-to-ROI, image-edit augmentation, and AnomalyGen to create initial PCBA datasets. The Day 1 path performs inference and labeling on real images. This skill helps with first-time asset setup, creation of finetuning checkpoints, and configuring deployment. Trigger keywords: defect image generation, dig workflow, dig pipeline, defect image detection workflow, aoi pipeline, aoi anomalygen, usd2roi anomalygen, day 0 pcba, day 1 pcba, day 1 real-photo alignment, day 1 manual roi, metal surface anomaly, glass defect, anomalygen finetune, setup_pcb, setup_metal, setup_glass, setup_pretrained, dig setup, dig datasets, dig pretrained checkpoint, dig image-edit endpoint.
accelint-react-best-practices
IncludedReact performance optimization and best practices. ALWAYS use this skill when working with any React code - writing components, hooks, JSX; refactoring; optimizing re-renders, memoization, state management; reviewing for performance; fixing hydration mismatches; debugging infinite re-renders, stale closures, input focus loss, animations restarting; preventing remounting; implementing transitions, lazy initialization, effect dependencies. Even simple React tasks benefit from these patterns. Covers React 19+ (useEffectEvent, Activity, ref props). Triggers - useEffect, useState, useMemo, useCallback, memo, inline components, nested components, components inside components, re-render, performance, hydration, SSR, Next.js, useDeferredValue, combined hooks.
elevenlabs-agents
IncludedBuild conversational AI voice agents with ElevenLabs Platform using React, JavaScript, React Native, or Swift SDKs. Configure agents, tools (client/server/MCP), RAG knowledge bases, multi-voice, and Scribe real-time STT. Use when: building voice chat interfaces, implementing AI phone agents with Twilio, configuring agent workflows or tools, adding RAG knowledge bases, testing with CLI "agents as code", or troubleshooting deprecated @11labs packages, Android audio cutoff, CSP violations, dynamic variables, or WebRTC config. Keywords: ElevenLabs Agents, ElevenLabs voice agents, AI voice agents, conversational AI, @elevenlabs/react, @elevenlabs/client, @elevenlabs/react-native, @elevenlabs/elevenlabs-js, @elevenlabs/agents-cli, elevenlabs SDK, voice AI, TTS, text-to-speech, ASR, speech recognition, turn-taking model, WebRTC voice, WebSocket voice, ElevenLabs conversation, agent system prompt, agent tools, agent knowledge base, RAG voice agents, multi-voice agents, pronunciation dictionary, voice speed control, elevenlabs scribe, @11labs deprecated, Android audio cutoff, CSP violation elevenlabs, dynamic variables elevenlabs, case-sensitive tool names, webhook authentication
humanizer
IncludedHumanize AI-generated text by detecting and removing patterns typical of LLM output. Rewrites text to sound natural, specific, and human. Uses 28 pattern detectors, 560+ AI vocabulary terms across 3 tiers, and statistical analysis (burstiness, type-token ratio, readability) for comprehensive detection. Use when asked to humanize text, de-AI writing, make content sound more natural/human, review writing for AI patterns, score text for AI detection, or improve AI-generated drafts. Covers content, language, style, communication, and filler categories.
generating-mermaid-diagrams
IncludedSalesforce architecture diagrams using Mermaid with ASCII fallback. Use this skill when generating text-based diagrams for Salesforce architecture, OAuth flows, ERDs, integration sequences, or Agentforce structure. TRIGGER when: user says "diagram", "visualize", "ERD", or asks for sequence diagrams, flowcharts, class diagrams, or architecture visualizations in Mermaid. DO NOT TRIGGER when: user wants PNG/SVG image output (use generating-visual-diagrams), or asks about non-Salesforce systems.