mcpField
C
configure-container

configure-container

github.com/laurigatesクラウド・DevOps5951 回インストール1 日前に更新
リポジトリ

configure-container について

プロジェクト標準に沿ってコンテナ基盤を監査・設定するスキルです。Dockerfile、ビルドワークフロー、スキャン、安全対策を確認し、チェックのみの実行と自動修正に対応します。

主な機能

  1. 01Dockerfile とビルドワークフローの確認
  2. 02マルチステージビルドと非 root ユーザーの確認
  3. 03イメージラベルと .dockerignore の確認
  4. 04Trivy または Grype スキャンの設定
  5. 05マルチプラットフォームビルドとキャッシュの確認
  6. 06チェック実行と自動修正

活用シーン

  1. 01コンテナ基盤の準拠状況の監査
  2. 02コンテナビルドパイプラインの確認
  3. 03CI への脆弱性スキャン追加
  4. 04コンテナ設定の問題修正

インストール

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

$npx skills add https://github.com/laurigates/claude-plugins --skill configure-container

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

同梱ファイルREFERENCE.md

詳細

/configure:container

プロジェクトの基準への包括的なコンテナインフラストラクチャの準拠状況を確認し、設定します。最小限のイメージ、非 root ユーザー、セキュリティ強化を重視します。

このスキルを使用する場面

次の場合にこのスキルを使用します…次の場合は別の方法を使用します…
コンテナインフラストラクチャの準拠状況を監査する(Dockerfile、ワークフロー、スキャン)Dockerfile をゼロから作成する(/configure:dockerfile)
マルチステージビルド、非 root ユーザー、セキュリティ強化を確認するKubernetes デプロイを設定する(/configure:skaffold)
GHCR とマルチプラットフォーム対応を備えたコンテナビルドワークフローを設定するビルド済みイメージの脆弱性スキャンを実行する(Trivy CLI を直接使用)
.dockerignore、OCI ラベル、ベースイメージのバージョンを確認するVS Code の devcontainer 機能を設定する
CI パイプラインに Trivy/Grype スキャンを追加するコンテナのランタイムの問題をデバッグする(system-debugging エージェント)

コンテキスト

  • Dockerfile: !find . -maxdepth 2 \( -name 'Dockerfile' -o -name 'Dockerfile.*' -o -name '*.Dockerfile' \)
  • Docker の ignore ファイル: !find . -maxdepth 1 -name '.dockerignore'
  • コンテナのワークフロー: !find .github/workflows -maxdepth 1 \( -name '*container*' -o -name '*docker*' -o -name '*build*' \)
  • Devcontainer: !find .devcontainer -maxdepth 1 -name 'devcontainer.json'
  • Skaffold: !find . -maxdepth 1 -name 'skaffold.yaml'
  • パッケージファイル: !find . -maxdepth 1 \( -name 'package.json' -o -name 'pyproject.toml' -o -name 'Cargo.toml' -o -name 'go.mod' \)
  • プロジェクト基準: !find . -maxdepth 1 -name '.project-standards.yaml'

パラメーター

コマンド引数から解析します。

  • --check-only: 変更を加えずに準拠状況を報告します(CI/CD モード)
  • --fix: 確認を求めずに修正を自動適用します
  • --component <name>: 指定したコンポーネントのみを確認します(dockerfile、workflow、registry、scanning、devcontainer)

セキュリティの理念

攻撃対象領域を最小化する:イメージが小さいほど、脆弱性が少なくなります。Node.js には Alpine(約 5 MB)、Python には slim(約 50 MB)を使用します。

デフォルトで非 root:すべてのコンテナは、必ず非 root ユーザーとして実行します。

マルチステージ必須:ビルド環境とランタイム環境を分離します。ビルドツールと開発用依存関係を本番イメージに含めてはいけません。

実行

このコンテナインフラストラクチャ準拠チェックを実行します。

Step 1: コンテナ関連ファイルを検出する

Dockerfile、ワークフローファイル、devcontainer 設定、.dockerignore を検索します。パッケージファイルからプロジェクトの種類(frontend、python、go、rust、infrastructure)を検出します。

Step 2: 最新のベースイメージバージョンを調べる

古いイメージを指摘する前に、WebSearch または WebFetch を使用して現在のバージョンを確認します。

  1. Node.js Alpine イメージ:Docker Hub で最新の LTS Alpine タグを確認します
  2. Python slim イメージ:Docker Hub で最新の slim タグを確認します
  3. nginx Alpine:Docker Hub で最新の Alpine タグを確認します
  4. GitHub Actions:リリースページで最新のアクションバージョンを確認します
  5. Trivy:aquasecurity/trivy-action のリリースを確認します
ステップ 3:各コンポーネントを分析する

各コンポーネントが基準を満たしているか確認します。

Dockerfile の基準:

確認項目基準重大度
存在コンテナ化されたプロジェクトでは必須見つからない場合は FAIL
マルチステージ必須(ビルドステージ+ランタイムステージ)見つからない場合は FAIL
HEALTHCHECKK8s のプローブで必須見つからない場合は FAIL
root 以外のユーザー必須(任意ではありません)見つからない場合は FAIL
.dockerignore必須見つからない場合は WARN
.dockerignore Dockerfile*glob を使用して、すべての Dockerfile バリアントをコンテキストから除外するDockerfile のみの場合は WARN
ベースイメージのバージョン最新の安定版(Docker Hub で確認)古い場合は WARN
最小限のベースイメージNode では Alpine、Python では slim肥大化している場合は WARN

ベースイメージの基準(報告前に最新のものを確認):

言語ビルドイメージランタイムイメージサイズ目標
Node.jsnode:24-alpine(LTS)nginx:1.27-alpine< 50MB
Pythonpython:3.13-slimpython:3.13-slim< 150MB
Gogolang:1.23-alpinescratch または alpine:3.21< 20MB
Rustrust:1.84-alpinealpine:3.21< 20MB

セキュリティ強化の基準:

確認項目基準重大度
root 以外の USER必須(専用ユーザーを作成)見つからない場合は FAIL
読み取り専用 FS--read-only または RO アノテーション見つからない場合は INFO
新しい権限を付与しない--security-opt=no-new-privileges見つからない場合は INFO
ケイパビリティを削除--cap-drop=all +明示的な --cap-add見つからない場合は INFO
イメージにシークレットを含めない機密データを含む ENV がない見つかった場合は FAIL

ビルドワークフローの基準:

確認項目基準重大度
ワークフローの存在container-build.yml など見つからない場合は FAIL
checkout アクションv4 以降古い場合は WARN
build-push-actionv6 以降古い場合は WARN
マルチプラットフォームlinux/amd64,linux/arm64見つからない場合は WARN
ビルドキャッシュGHA キャッシュが有効見つからない場合は WARN
セキュリティスキャンワークフロー内の Trivy/Grype見つからない場合は WARN
id-token: writeprovenance/SBOM を設定する場合に必須見つからない場合は WARN
キャッシュスコープ複数イメージのビルドでは明示的な scope= を指定見つからない場合は WARN
スキャナーの固定Trivy/Grype アクションを SHA で固定(@master ではない)固定されていない場合は WARN

コンテナラベルの基準(GHCR 統合):

確認項目基準重大度
org.opencontainers.image.source必須 — リポジトリへのリンク見つからない場合は WARN
org.opencontainers.image.description必須 — パッケージの説明見つからない場合は WARN
org.opencontainers.image.licenses必須 — SPDX ライセンス見つからない場合は WARN

詳細な Dockerfile の確認が必要な場合は、/configure:dockerfile を実行してください。

ステップ 4:コンプライアンスレポートを生成する

書式付きのコンプライアンスレポートを出力します。

Container Infrastructure Compliance Report
==============================================
Project Type: frontend (detected)

Component Status:
  Dockerfile              PASS
  Build Workflow          PASS
  Registry Config         PASS
  Container Scanning      WARN (missing)
  Devcontainer           SKIP (not required)
  .dockerignore          PASS

Dockerfile Checks:
  Multi-stage             2 stages          PASS
  HEALTHCHECK             Present           PASS
  Base images             node:22, nginx    PASS

Build Workflow Checks:
  Workflow                container-build.yml PASS
  checkout                v4                PASS
  build-push-action       v6                PASS
  Multi-platform          amd64,arm64       PASS
  GHA caching             Enabled           PASS

Container Labels Checks:
  image.source            In metadata-action PASS
  image.description       Custom label set  PASS
  image.licenses          Not configured    WARN

Recommendations:
  - Add org.opencontainers.image.licenses label to workflow
  - Add Trivy or Grype vulnerability scanning to CI

Overall: 2 warnings, 1 info

--check-only が指定されている場合は、ここで終了します。

ステップ 5:修正を適用する(--fix が指定された場合、またはユーザーが確認した場合)
  1. Dockerfile がない場合:/configure:dockerfile --fix を実行します
  2. ビルドワークフローがない場合:REFERENCE.md のテンプレートから作成します
  3. スキャンがない場合:Trivy スキャンジョブを追加します
  4. .dockerignore がない場合:REFERENCE.md の標準的な .dockerignore を作成します
  5. 古いアクション:バージョン番号を更新します
ステップ 6:基準の追跡を更新する

.project-standards.yaml を更新します。

components:
  container: "2025.1"
  dockerfile: "2025.1"
  container-workflow: "2025.1"

詳細なテンプレート(Dockerfile、ワークフロー、devcontainer、.dockerignore)については、REFERENCE.md を参照してください。

エージェント向けの最適化

コンテキストコマンド
コンプライアンスの簡易チェック/configure:container --check-only
すべての問題を自動修正/configure:container --fix
Dockerfile のみ/configure:container --check-only --component dockerfile
ワークフローのみ/configure:container --check-only --component workflow
スキャンのみ/configure:container --fix --component scanning
すべての Dockerfile を検索find . -maxdepth 2 \( -name 'Dockerfile' -o -name 'Dockerfile.*' \) 2>/dev/null

フラグ

フラグ説明
--check-only修正を提案せずにステータスを報告します
--fix修正を自動的に適用します
--component <name>特定のコンポーネントのみをチェックします(dockerfile、workflow、registry、scanning、devcontainer)

コンポーネントの依存関係

Container Infrastructure
├── Dockerfile (required)
│   └── .dockerignore (recommended)
├── Build Workflow (required for CI/CD)
│   ├── Registry config
│   └── Multi-platform builds
├── Container Scanning (recommended)
│   └── SBOM generation (optional)
└── Devcontainer (optional)
    └── VS Code extensions

注意事項

  • マルチプラットフォームビルド:M1/M2 Mac の開発者や ARM サーバーに不可欠です
  • GHCR:GitHub 上でホストされるプロジェクトでは、GitHub Container Registry が推奨されます
  • Trivy:包括的な脆弱性検出に推奨されるスキャナーです
  • Alpine と Slim:Node.js/Go/Rust には Alpine を使用してください。Python には slim(Debian)を使用してください(musl との互換性の問題があるため)
  • 非 root での実行は必須:本番環境では、コンテナを root として実行しないでください
  • バージョンの固定:必ず特定のバージョンタグを使用し、latest は使用しないでください

関連項目

  • /configure:dockerfile - Dockerfile 固有の設定
  • /configure:workflows - GitHub Actions ワークフローの設定
  • /configure:skaffold - Kubernetes 開発の設定
  • /configure:security - セキュリティスキャンの設定
  • /configure:all - すべてのコンプライアンスチェックを実行
  • container-development スキル - コンテナのベストプラクティス
  • ci-workflows スキル - CI/CD ワークフローのパターン

コメント