mcpField
J
java-docker

java-docker

github.com/pluginagentmarketplaceクラウド・DevOps41263 回インストール42 週間前に更新
リポジトリ

java-docker について

java-dockerは、Javaアプリケーションをコンテナ化する開発者向けのスキルで、Dockerfileの最適化とコンテナ内のJVM設定を扱います。イメージレイヤー、コンテナのセキュリティ、ヘルスチェック、一般的な問題の調査も説明します。

主な機能

  1. 01マルチステージビルドによるDockerfile最適化
  2. 02コンテナ内のJVMオプション設定
  3. 03イメージレイヤーと依存キャッシュの最適化
  4. 04非rootユーザーと読み取り専用ファイルシステムの適用
  5. 05ヘルスチェック設定と脆弱性スキャン

活用シーン

  1. 01Javaアプリケーションの小さなイメージ作成
  2. 02コンテナのメモリー制限に応じたJVM設定
  3. 03本番コンテナのセキュリティ強化
  4. 04OOMKilledや権限問題の調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pluginagentmarketplace/custom-plugin-java --skill java-docker

インストール後、Claude Code で/java-dockerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
config.yaml
Dockerfile.java
schema.json
references/
GUIDE.md
PATTERNS.md
scripts/
validate.py

詳細

Java Docker スキル

最適化された Dockerfile と JVM 設定で Java アプリケーションをコンテナ化します。

概要

このスキルでは、マルチステージビルド、JVM のコンテナ設定、セキュリティ強化、レイヤーの最適化など、Java 向けの Docker のベストプラクティスを扱います。

このスキルを使用するタイミング

次のような場合に使用します。

  • 最適化された Java Dockerfile を作成する
  • コンテナ向けに JVM を設定する
  • セキュリティのベストプラクティスを実装する
  • イメージサイズを削減する
  • ヘルスチェックを設定する

対象トピック

Dockerfile の最適化
  • マルチステージビルド
  • レイヤーキャッシュ戦略
  • Spring Boot のレイヤー化 JAR
  • 依存関係のキャッシュ
JVM のコンテナ設定
  • UseContainerSupport
  • MaxRAMPercentage
  • GC の選択
  • OOM 発生時の終了
セキュリティ
  • root 以外のユーザー
  • 読み取り専用ファイルシステム
  • 脆弱性スキャン
  • シークレットの取り扱い

クイックリファレンス

# Multi-stage optimized Dockerfile
FROM eclipse-temurin:21-jdk-alpine AS builder

WORKDIR /app

# Cache dependencies
COPY pom.xml .
COPY .mvn .mvn
RUN mvn dependency:go-offline -B

# Build and extract layers
COPY src ./src
RUN mvn package -DskipTests && \
    java -Djarmode=layertools -jar target/*.jar extract

# Runtime stage
FROM eclipse-temurin:21-jre-alpine

# Security: non-root user
RUN addgroup -S app && adduser -S app -G app
USER app

WORKDIR /app

# Copy layers in order of change frequency
COPY --from=builder /app/dependencies/ ./
COPY --from=builder /app/spring-boot-loader/ ./
COPY --from=builder /app/snapshot-dependencies/ ./
COPY --from=builder /app/application/ ./

# JVM container settings
ENV JAVA_OPTS="-XX:+UseContainerSupport \
    -XX:MaxRAMPercentage=75.0 \
    -XX:+ExitOnOutOfMemoryError \
    -XX:+UseG1GC"

EXPOSE 8080

HEALTHCHECK --interval=30s --timeout=3s --start-period=30s \
    CMD wget -qO- http://localhost:8080/actuator/health/liveness || exit 1

ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS org.springframework.boot.loader.launch.JarLauncher"]

JVM のコンテナフラグ

# Recommended production settings
JAVA_OPTS="
  -XX:+UseContainerSupport
  -XX:MaxRAMPercentage=75.0
  -XX:InitialRAMPercentage=50.0
  -XX:+ExitOnOutOfMemoryError
  -XX:+HeapDumpOnOutOfMemoryError
  -XX:HeapDumpPath=/tmp/heapdump.hprof
  -XX:+UseG1GC
  -Djava.security.egd=file:/dev/./urandom
"

ベースイメージの比較

イメージサイズセキュリティ用途
temurin:21-jre~200MB良好一般用途
temurin:21-jre-alpine~100MB良好サイズ最適化
distroless/java21~80MB最高本番環境

セキュリティのベストプラクティス

# Non-root user
RUN addgroup -S app && adduser -S app -G app
USER app

# Read-only filesystem
# (Configure at runtime with --read-only)

# No shell access with distroless
FROM gcr.io/distroless/java21-debian12

# Health check
HEALTHCHECK --interval=30s --timeout=3s \
    CMD wget -qO- localhost:8080/actuator/health || exit 1

トラブルシューティング

よくある問題
問題原因解決策
OOMKilledヒープ > 上限MaxRAMPercentage を設定する
起動が遅いイメージが大きいマルチステージビルドを使用する
アクセスが拒否されるroot が必要ファイル権限を修正する
メモリ情報がないJVM が古いJava 11+ に更新する
デバッグチェックリスト
□ Check container memory limits
□ Verify JVM sees container limits
□ Review health check configuration
□ Scan image for vulnerabilities
□ Test with resource constraints

使用方法

Skill("java-docker")

関連スキル

  • java-maven-gradle - ビルド統合
  • java-microservices - K8s デプロイ

コメント