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構築可能。
| 項目 | 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 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 が理想的。
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 で管理する運用が現実的。