Docker Init CLI(ドッカーイニットシーエルアイ)
2024年Docker Desktop 4.27+標準のInit Command。docker init+Dockerfile/.dockerignore/compose.yaml自動生成+Node.js/Python/Go/Rust/Java言語別Template+Scaffolding効率化搭載。
概要
Docker Init CLIは2024年Docker Desktop 4.27+でstable昇格したDocker Init CLIコマンドで、docker init 実行で対話的に Dockerfile/.dockerignore/compose.yaml/README.Docker.md を自動生成する Scaffolding Tool。Project の言語(Node.js/Python/Go/Rust/Java/PHP/ASP.NET Core)を選択するだけで、Docker Best Practiceに準拠したMulti-stage Build Dockerfile + 適切な Base Image + 標準的な COPY/RUN命令 + 効率的な Layer設計のDockerfileが自動生成される。Docker初学者・Docker非専門の Backend Engineer向けの参入障壁削減ツールとして、 2023年Q3に Beta公開され 2024年Q1に Stable昇格した経緯。Cargo Init・npm init・go mod init等の言語別Project初期化ツールと同様の役割を Container Tier で提供する位置づけ。jisaku.com API(Hono on Bun)・Web(Next.js)等の各 サブProject で Docker採用する際、 docker init で迅速に Dockerfile + compose.yaml構築可能。
主な特徴・仕組み
- 言語別Template: Node.js/Python/Go/Rust/Java/PHP/ASP.NET Core の7言語サポート
- 対話式 CLI: 言語選択+Version+Port+Entry Point等を質問形式で入力
- Multi-stage Build: Best Practiceに従ったDockerfile自動生成、最終Image軽量化
- 適切な Base Image: 言語Version別の Distroless/Alpine/Slim Base Image自動選択
- .dockerignore生成: node_modules/.git/.env等の標準除外Pattern含む
- compose.yaml生成: Service定義+Port Mapping+Network基本構成
- README.Docker.md生成: Docker使用方法のドキュメント自動生成
- 既存ファイル保護: Dockerfileが既に存在する場合は確認プロンプト
- Best Practice準拠: USER non-root+HEALTHCHECK+Multi-stage+Layer Cache最適化
- Cross-platform: Docker Desktop(Windows/Mac/Linux)で動作、Docker Engine単独でも対応
- Customization可能: 生成後の Dockerfile/compose.yaml は手動編集自由
スペック比較表
| 項目 | Docker Init CLI | 手動Dockerfile作成 | docker scout(Security) | docker buildx |
|---|---|---|---|---|
| 用途 | Project初期化 | 全工程手動 | Security分析 | Multi-platform Build |
| Best Practice | 自動準拠 | 開発者次第 | - | - |
| 学習曲線 | 極低 | 高(Docker知識必須) | 低 | 中 |
| 言語対応 | 7言語 | 全言語 | - | - |
| 生成物 | Dockerfile+.dockerignore+compose.yaml+README | 手動 | Vulnerability Report | Multi-arch Image |
| Bundle Size | Native CLI | 手動工数 | Native CLI | Native CLI |
| Docker Desktop要否 | 推奨(Engineでも動作) | 不要 | 不要 | 不要 |
| 標準実行 | docker init | vim Dockerfile | docker scout | docker buildx |
具体例・対応製品
# 対話式 Init
$ docker init
Welcome to the Docker Init CLI!
This utility will walk you through creating the following files with sensible defaults for your project:
- .dockerignore
- Dockerfile
- compose.yaml
- README.Docker.md
? What application platform does your project use? Node
? What version of Node do you want to use? 22.11.0
? Which package manager do you want to use? npm
? What command do you want to use to start the app? node src/index.js
? What port does your server listen on? 3000
✓ Created → .dockerignore
✓ Created → Dockerfile
✓ Created → compose.yaml
✓ Created → README.Docker.md
# 自動生成 Dockerfile例(Node.js)
FROM node:22.11.0-alpine AS base
WORKDIR /usr/src/app
FROM base AS deps
RUN --mount=type=bind,source=package.json,target=package.json \
--mount=type=bind,source=package-lock.json,target=package-lock.json \
--mount=type=cache,target=/root/.npm \
npm ci --omit=dev
FROM base AS final
ENV NODE_ENV production
USER node
COPY --from=deps /usr/src/app/node_modules ./node_modules
COPY . .
EXPOSE 3000
CMD ["node", "src/index.js"]
- Docker Desktop 4.27+: 2024年Q1リリース、Docker Init CLI Stable同梱
- Docker Engine 25.0+: Linux Server環境での docker init コマンド対応
- 対応言語Template: Node.js/Python/Go/Rust/Java/PHP/ASP.NET Core
- Custom Templates: 2025年予定、独自Project Templateの登録機能
- 競合機種: cargo new(Rust)、npm init(Node.js)、yo(Yeoman generator)、cookiecutter(Python)
自作PCでの選び方・注意点
Docker Init CLIは初学者向けの優秀なScaffoldingツールで、jisaku.com 開発者向けにも有用な選択肢。jisaku.com の各サブProject(jisakucom-api/jisakucom-web/jisakucom-admin等)でDocker採用する際、docker initで迅速に標準的なDockerfile+compose.yaml構築可能。Multi-stage Build+Distroless Image+USER non-root+HEALTHCHECK等のBest Practice が自動適用され、Docker熟練者の知識不要でセキュア+効率的なImageが生成される。jisaku.com 現状のDockerfile(手動最適化済み)に比べると一般的すぎる場合あるが、新規サブProject立ち上げ時の Initial Setup には絶大な効率化効果。Hono on Bun の場合、docker init の Node.js Template をベースに FROM oven/bun:1.x-alpine 等に書き換える Hybrid活用が現実的。Python Template はFastAPI/Django/Flask 共通の汎用Templateで、uvicorn 起動コマンド等を細かく調整必要。Go Template は完璧なMulti-stage Build(builder + distroless)で、Production即利用可能なクオリティ。CDN+Linterなしの開発者には特に有用、Docker Hubで何か参考Dockerfile探す手間が排除される。
関連用語との違い
手動Dockerfile作成との違い: 手動は柔軟性最大+Docker熟練者の最適化反映、Init CLIは標準化+学習曲線極低+迅速。新規Projectの初期構築 → Init CLI、特殊要件のあるProduction → 手動。 docker scoutとの違い: docker scout は既存Image のVulnerability Scan + Compliance Check、 docker init は新規Project Scaffolding。役割が完全に異なり補完関係、 Init CLI で生成したDockerfile を scout で検証する Workflow が理想的。
よくある質問(FAQ)
Q1: 既存 Dockerfile があるProjectで使うとどうなる?
A: 上書き確認プロンプト表示、誤って上書きするリスクなし。既存Dockerfile を保持しつつcompose.yaml のみ新規生成する選択肢もあり、用途に応じて柔軟。Backupとってから実行が安全。
Q2: Docker Init CLI の生成物は Production で使える? A: 使えるが調整推奨。Best Practice準拠+Multi-stage Build+Security Userで最低限の品質確保、ただし Project特有要件(Custom Build Tool・Database Connection・Secrets Mount等)は手動追加必要。Init CLI出力を出発点に Production最適化が現実的Approach。
Q3: Custom Template は登録できる? A: 2026年5月時点で公式Custom Template機能未対応、2025年中に拡張予定。現状は標準7言語Template+手動編集Approach。組織独自のTemplate標準化は、 docker init 出力 + ベース Dockerfile を Internal Wiki/Boilerplate Repository で管理する運用が現実的。
まとめ
- Docker Init CLI = 2024年Docker Desktop 4.27+ stable Scaffolding Tool
- docker init で対話的に Dockerfile+.dockerignore+compose.yaml+README自動生成
- Node.js/Python/Go/Rust/Java/PHP/ASP.NET Core の7言語Template
- Best Practice準拠+Multi-stage Build+Distroless+USER non-root
- Docker初学者+新規Project立ち上げの参入障壁削減ツール