ln-731-docker-generator について
フロントエンド、.NET、Pythonのプロジェクト向けにDocker設定を生成するスキルです。テンプレートと検出したバージョンを使ってファイルを作成しますが、イメージのビルドやデプロイ管理は行いません。
主な機能
- 01Dockerfileとdocker-compose.ymlを生成
- 02.dockerignoreとNginx設定を作成
- 03フロントエンド、.NET、Pythonに対応
- 04検出したバージョンとプロジェクト値を反映
- 05非rootユーザー、固定イメージ、ヘルスチェックを適用
活用シーン
- 01フロントエンドプロジェクトにコンテナ設定を追加
- 02.NETまたはPythonバックエンド用のDockerファイルを準備
- 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.templatedockerfile_backend_dotnet.templatedockerfile_backend_python.templatedockerfile_frontend.templatedockerignore.templatenginx.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 |
| バックエンド .NET | dockerfile_backend_dotnet、docker_compose、dockerignore |
| バックエンド Python | dockerfile_backend_python、docker_compose、dockerignore |
| フルスタック .NET | 上記のすべて(dotnet バリアント) |
| フルスタック Python | 上記のすべて(python バリアント) |
フェーズ 3:変数の置換
テンプレート内の変数を検出した値に置き換えます。
| 変数 | ソース | 例 |
|---|---|---|
{{NODE_VERSION}} | package.json の engines、またはデフォルト値 | 22 |
{{DOTNET_VERSION}} | *.csproj の TargetFramework | 9.0 |
{{PYTHON_VERSION}} | pyproject.toml、またはデフォルト値 | 3.12 |
{{PROJECT_NAME}} | ディレクトリ名 | my-app |
{{DLL_NAME}} | *.csproj の AssemblyName | MyApp.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:ファイルの生成
テンプレートからファイルを生成します。
- ファイルがすでに存在するか確認します(上書きの前に警告します)
- 変数を置換します
- 適切な場所にファイルを書き込みます
- 可能な場合は構文を検証します
ファイルの場所:
Dockerfile.frontend->src/frontend/DockerfileDockerfile.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 で機密ファイルがすべて除外されている
- シークレットやパスワードがハードコードされていない
重要な注意事項
- バージョン検出:ハードコードされたデフォルトではなく、コーディネーターが検出したバージョンを使用します。
- 冪等性:書き込む前にファイルの存在を確認します。上書きする場合は警告します。
- テンプレートベース:すべての生成に references/ のテンプレートを使用します。ファイルの内容をハードコードしないでください。
- セキュリティを最優先:生成されるすべてのファイルで、セキュリティのベストプラクティスに従う必要があります。
参照ファイル
| ファイル | 用途 |
|---|---|
| dockerfile_frontend.template | React/Vite のマルチステージ Dockerfile |
| dockerfile_backend_dotnet.template | .NET のマルチステージ Dockerfile |
| dockerfile_backend_python.template | Python のマルチステージ Dockerfile |
| docker_compose.template | docker-compose.yml テンプレート |
| dockerignore.template | .dockerignore テンプレート |
| nginx.template | Nginx 設定 |
完了の定義
- 検出されたすべてのスタックコンポーネント(フロントエンド/バックエンド)用の Dockerfile が生成されている
- docker-compose.yml がエラーなしで検証される(
docker-compose config) - .dockerignore で機密ファイルとビルド成果物が除外されている
- すべてのベースイメージでバージョンが固定されている(
latestではない)
バージョン: 1.2.0 最終更新日: 2026-01-21
コメント
Markdown 対応