mcpField
L
ln-731-docker-generator

ln-731-docker-generator

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

ln-731-docker-generator について

フロントエンド、.NET、Pythonのプロジェクト向けにDocker設定を生成するスキルです。テンプレートと検出したバージョンを使ってファイルを作成しますが、イメージのビルドやデプロイ管理は行いません。

主な機能

  1. 01Dockerfileとdocker-compose.ymlを生成
  2. 02.dockerignoreとNginx設定を作成
  3. 03フロントエンド、.NET、Pythonに対応
  4. 04検出したバージョンとプロジェクト値を反映
  5. 05非rootユーザー、固定イメージ、ヘルスチェックを適用

活用シーン

  1. 01フロントエンドプロジェクトにコンテナ設定を追加
  2. 02.NETまたはPythonバックエンド用のDockerファイルを準備
  3. 03開発・本番向けコンテナ設定を生成

インストール

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

$npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-731-docker-generator

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

同梱ファイル

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

references/templates/
docker_compose.template
dockerfile_backend_dotnet.template
dockerfile_backend_python.template
dockerfile_frontend.template
dockerignore.template
nginx.template

詳細

パス: ファイルパス(references/、../ln-*)は、このスキルディレクトリを基準としています。

ln-731-docker-generator

タイプ: L3 ワーカー カテゴリー: 7XX プロジェクトのブートストラップ

コンテナ化された開発環境向けに、本番環境で使える Docker 設定を生成します。


目的と範囲

ローカル開発と本番環境向けの Docker インフラストラクチャを作成します。

  • 行うこと: Dockerfile、docker-compose、.dockerignore、nginx 設定を生成します
  • 行わないこと: イメージのビルド、コンテナの起動、デプロイの管理

入力

入力ソース説明
スタックタイプln-730 コーディネーターfrontend、backend-dotnet、backend-python
バージョン自動検出Node.js、.NET、Python のバージョン
プロジェクト名ディレクトリ名コンテナ名に使用
ポートデフォルト値または検出値フロントエンド:3000、バックエンド:5000/8000、DB:5432

出力

ファイル用途テンプレート
Dockerfile.frontendフロントエンドのビルドと配信dockerfile_frontend.template
Dockerfile.backendバックエンドのビルドと実行dockerfile_backend_dotnet.template または dockerfile_backend_python.template
docker-compose.ymlサービスのオーケストレーションdocker_compose.template
.dockerignoreビルドコンテキストから除外するファイルdockerignore.template
nginx.confフロントエンドのプロキシ設定nginx.template

ワークフロー

フェーズ 1:入力の検証

コーディネーターから受け取った設定を検証します。

  • スタックタイプがサポート対象であることを確認します(frontend、backend-dotnet、backend-python)
  • バージョンが有効であることを確認します(Node 18 以降、.NET 8 以降、Python 3.10 以降)
  • プロジェクトディレクトリが存在することを確認します

出力: 検証済みの設定、またはエラー

フェーズ 2:テンプレートの選択

スタックに基づいて適切なテンプレートを選択します。

スタック使用するテンプレート
フロントエンドのみdockerfile_frontend、nginx、dockerignore
バックエンド .NETdockerfile_backend_dotnet、docker_compose、dockerignore
バックエンド Pythondockerfile_backend_python、docker_compose、dockerignore
フルスタック .NET上記のすべて(dotnet バリアント)
フルスタック Python上記のすべて(python バリアント)
フェーズ 3:変数の置換

テンプレート内の変数を検出した値に置き換えます。

変数ソース例
{{NODE_VERSION}}package.json の engines、またはデフォルト値22
{{DOTNET_VERSION}}*.csproj の TargetFramework9.0
{{PYTHON_VERSION}}pyproject.toml、またはデフォルト値3.12
{{PROJECT_NAME}}ディレクトリ名my-app
{{DLL_NAME}}*.csproj の AssemblyNameMyApp.Api.dll
{{FRONTEND_PORT}}デフォルト値または検出値3000
{{BACKEND_PORT}}スタックに応じて設定5000(.NET)、8000(Python)
{{BACKEND_HOST}}サービス名backend
{{CMD}}フレームワークに応じて設定["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"](FastAPI)または ["gunicorn", "--bind", "0.0.0.0:8000", "{{PROJECT_NAME}}.wsgi:application"](Django)
フェーズ 4:ファイルの生成

テンプレートからファイルを生成します。

  1. ファイルがすでに存在するか確認します(上書きの前に警告します)
  2. 変数を置換します
  3. 適切な場所にファイルを書き込みます
  4. 可能な場合は構文を検証します

ファイルの場所:

  • Dockerfile.frontend -> src/frontend/Dockerfile
  • Dockerfile.backend -> プロジェクトのルート
  • docker-compose.yml -> プロジェクトのルート
  • .dockerignore -> プロジェクトのルート
  • nginx.conf -> src/frontend/nginx.conf

サポート対象のスタック

フロントエンド:React/Vite + Nginx

要件:

  • build スクリプトを含む package.json
  • Vite または CRA の設定

生成されるもの:

  • マルチステージ Dockerfile(ビルダー + nginx)
  • SPA ルーティングと API プロキシを設定した Nginx 設定
バックエンド:.NET 8/9

要件:

  • ルートに *.sln ファイルがあること
  • TargetFramework を含む *.csproj があること

生成されるもの:

  • マルチステージ Dockerfile(SDK ビルド+ASP.NET ランタイム)
  • ヘルスチェックエンドポイントの設定
バックエンド:Python(FastAPI/Django)

要件:

  • requirements.txt または pyproject.toml があること

生成されるもの:

  • マルチステージ Dockerfile(ビルダー+slim ランタイム)
  • uvicorn(FastAPI)または gunicorn(Django)のエントリーポイント

セキュリティとパフォーマンスのベストプラクティス

生成されるすべてのファイルは、次のガイドラインに従います。

プラクティス実装
非 root ユーザーappuser(UID 1001)を作成して使用
最小限のイメージAlpine/slim バリアント
マルチステージビルドビルドツールをランタイムから除外
シークレットを含めないハードコードせず、環境変数を使用
ヘルスチェック組み込みの HEALTHCHECK 命令(wget/curl)
具体的なバージョンベースイメージのバージョンを固定(例:nginx:1.27-alpine)
非対話モードARG DEBIAN_FRONTEND=noninteractive
レイヤーキャッシュ依存関係ファイルを先に、ソースコードを最後にコピー
BuildKit キャッシュpip に --mount=type=cache を使用
Python の最適化PYTHONDONTWRITEBYTECODE=1、PYTHONUNBUFFERED=1

品質基準

生成されるファイルは、次の条件を満たす必要があります。

  • docker-compose config がエラーなしで検証される
  • すべてのベースイメージで具体的なバージョンが使用されている(latest ではない)
  • すべての Dockerfile で非 root ユーザーが設定されている
  • すべてのサービスにヘルスチェックが設定されている
  • .dockerignore で機密ファイルがすべて除外されている
  • シークレットやパスワードがハードコードされていない

重要な注意事項

  1. バージョン検出:ハードコードされたデフォルトではなく、コーディネーターが検出したバージョンを使用します。
  2. 冪等性:書き込む前にファイルの存在を確認します。上書きする場合は警告します。
  3. テンプレートベース:すべての生成に references/ のテンプレートを使用します。ファイルの内容をハードコードしないでください。
  4. セキュリティを最優先:生成されるすべてのファイルで、セキュリティのベストプラクティスに従う必要があります。

参照ファイル

ファイル用途
dockerfile_frontend.templateReact/Vite のマルチステージ Dockerfile
dockerfile_backend_dotnet.template.NET のマルチステージ Dockerfile
dockerfile_backend_python.templatePython のマルチステージ Dockerfile
docker_compose.templatedocker-compose.yml テンプレート
dockerignore.template.dockerignore テンプレート
nginx.templateNginx 設定

完了の定義

  • 検出されたすべてのスタックコンポーネント(フロントエンド/バックエンド)用の Dockerfile が生成されている
  • docker-compose.yml がエラーなしで検証される(docker-compose config)
  • .dockerignore で機密ファイルとビルド成果物が除外されている
  • すべてのベースイメージでバージョンが固定されている(latest ではない)

バージョン: 1.2.0 最終更新日: 2026-01-21

コメント