Dockerfile フォーマッターの主な機能
- Dockerfile と Containerfile のインデント、スペース、行折り返しをクリーンアップ
- 一貫したバックスラッシュとインデントで複数行 RUN 命令を正規化
- Dockerfile のセマンティクスを尊重 – 命令の並べ替えなし、シェルロジック変更なし
- 決定論的出力:同じ入力とバージョン ⇒ 同じ整形済み Dockerfile
- dprint を使用する pre-commit フック、モノレポ、CI ジョブに最適な相棒
- シンタックスハイライト、差分対応出力、コピー/ダウンロード機能付き Web ベースエディタ
- マルチステージビルド、ビルド引数、典型的な Node/.NET/Go イメージに適応
🛠️ Dockerfile のフォーマット方法 for dockerfile-formatter
1. Dockerfile を貼り付けるかアップロード
エディターにDockerfileを貼り付けるか、プロジェクトからDockerfile/Containerfileをドロップしてください。実験したいだけの場合は、小さなスニペット(単一のFROM/RUNブロックなど)も使用できます。
2. フォーマッターを実行
「フォーマット」をクリックします。このツールはソースを安全なdprintベースのバックエンドに送信し、実行ロジックに触れることなくインデント、スペース、配列形式の命令、複数行のRUNチェーンを調整します。
3. 確認、コピー、またはダウンロード
フォーマットされた出力を元のファイルと比較します。満足したら、結果をリポジトリにコピーするか、フォーマットされたDockerfileをダウンロードして直接コミットしてください。
技術詳細
対応ファイルタイプ
このフォーマッターは、Docker、Podmanおよび類似ツールで使用されるDockerビルド命令と互換性のあるコンテナビルドファイルを対象としています。
| タイプ | 例 | 備考 |
|---|---|---|
| Dockerfile | Dockerfile, Dockerfile.prod, Dockerfile.node18 | イメージ用の従来のDockerビルドファイル |
| Containerfile | Containerfile | Podman / Buildahスタイルの設定ファイル |
| インラインスニペット | FROM node:18-alpine | クイックテスト用の小さなフラグメントや例もサポート |
フォーマット動作(dprintスタイル)
このツールで使用される基盤dprintプラグインの高レベルな動作:
| 領域 | 動作 | 例 |
|---|---|---|
| インデント | RUNおよび他の命令の継続行のインデントを正規化 | RUN set -eux; \\n npm ci; \\n npm cache clean --force |
| リストと配列 | CMD/ENTRYPOINT/HEALTHCHECKのJSON形式配列のスペースを整理 | CMD ["npm", "start"] → CMD ["npm", "start"](一貫したスペース付き) |
| スペース | 意味を保ちながら命令周りの冗長なスペースを削除 | ENV NODE_ENV=production |
| 行の折り返し | 順序を変更せずに長いRUNチェーンを可読性のために再フローすることがあります | 長いシェルパイプラインが差分でスキャンおよびレビューしやすくなります |
| コメント | 命令の横にあるフルラインおよびインラインコメントを保持します | # ビルドステージのベースイメージ FROM node:18 AS build |
対象外の目標
このフォーマッターは意図的にレイアウトに限定されているため、他のDevOpsツールと組み合わせて使用できます:
| 項目 | 対応? | 備考 |
|---|---|---|
| Hadolintスタイルのリンティング | ❌ | ベストプラクティスのチェックと警告にはhadolintまたは類似ツールを使用してください |
| セキュリティスキャン | ❌ | イメージやレジストリのCVEまたは脆弱性スキャンは行いません |
| イメージビルド | ❌ | docker buildを実行したり、Docker Engineとやり取りしたりしません |
| 命令の並べ替え | ❌ | 命令を並べ替えることはありません。インデントと空白のみが変更されます |
| ベースイメージの強化 | ❌ | ベースイメージを推奨しません。提供されたものをフォーマットします |
CLI & CI 同等機能
結果が気に入りましたか?dprintと補完ツールを使用して、ローカルとCIで同じ動作を実現できます。
ユニバーサル (dprint)
dprintを初期化し、Dockerfileプラグインを追加
dprint init
# dprint.jsonに以下を追加:
# {
# "plugins": ["https://plugins.dprint.dev/dockerfile-0.x.wasm"]
# }
# その後、Dockerfileをフォーマット:
dprint fmt Dockerfileこのオンラインフォーマッターに最も近いため、開発者とCIで同じスタイルを使用できます。
Linux/macOS
hadolintでリンティング(フォーマットを補完)
hadolint Dockerfileフォーマット(スタイル)とリンティング(ベストプラクティス、小型イメージ、ヘルスチェック)を組み合わせます。
Git / pre-commit
コミット前に変更されたDockerfileでdprintを実行
# .pre-commit-config.yaml(概念的な例)
- repo: local
hooks:
- id: dprint-dockerfile
name: dprint Dockerfiles
entry: dprint fmt
language: system
files: "(Dockerfile|Containerfile)$"mainにマージされるすべてのDockerfileが事前にフォーマットされていることを保証します。
一般的な使用例
開発 & プラットフォームエンジニアリング
- コードレビュー前にマイクロサービス全体のDockerfileを統一化
- 複数チームやテンプレートから継承したレガシーDockerfileの整理
- イメージ、ベースOSバージョン、ビルド戦略の移行時のスタイル標準化
# 典型的なマルチステージDockerfile(クリーンでレビューしやすい)
FROM node:18 AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci && npm cache clean --force
COPY . .
RUN npm run build
FROM node:18-alpine
WORKDIR /app
COPY --from=build /app/dist ./
CMD ["node", "index.js"]CI/CDパイプライン
- Dockerfileのフォーマットが適切でない場合にビルドを失敗させる
- pre-commitフックやCIジョブによる機能ブランチでのスタイル自動修正
- 長期間維持されるモノレポやプラットフォームリポジトリでのDocker設定の可読性維持
# Git pre-commitフックの例(疑似コード)
#!/bin/sh
changed=$(git diff --cached --name-only --diff-filter=ACM | grep -E 'Dockerfile|Containerfile' || true)
[ -z "$changed" ] && exit 0
dprint fmt $changed
git add $changedチームオンボーディングと一貫性
- 新規チームメンバーに従うべき単一の意見のあるDockerfileスタイルを提供
- PRからコードスタイルの議論を排除:フォーマッターを信頼できる情報源として
- 同一のdprint設定を基にローカルフォーマット、リポジトリフック、CIジョブを統一
# docs/onboarding.md向けサンプルスニペット
1. ローカルにdprintをインストール
2. プラットフォームリポジトリから共有dprint.jsonをコピー
3. プルリクエスト作成前に `dprint fmt Dockerfile` を実行❓ Frequently Asked Questions
フォーマットはイメージビルドに影響しますか?
これはhadolintでのリンティングと同じですか?
このスタイルをCIで強制できますか?
マルチステージビルドはサポートされていますか?
私のDockerfileはサーバーにアップロードされますか?
Pro Tips
CIで自動的にフォーマットを実行し、Dockerfileのスタイルがサービスやチーム間でずれないようにする。
このフォーマッターをhadolintのようなリンターと組み合わせて、レイアウトとベストプラクティスの両方をカバーする。
プロジェクトの早い段階で標準的なマルチステージDockerfileテンプレートに合意し、フォーマットを維持して新しいサービスが同じ構造に従うようにする。
モノレポで作業する場合は、単一のdprint設定を共有し、アプリケーションコード、インフラコード、Dockerfileが一貫した規約を使用するようにする。
Additional Resources
Other Tools
- CSSビューティファイア
- HTMLビューティファイア
- JavaScriptビューティファイア
- PHPビューティファイア
- カラーピッカー
- スプライト抽出ツール
- Base64デコーダー
- Base64エンコーダー
- C#フォーマッタ
- CSVフォーマッタ
- Elmフォーマッタ
- ENVフォーマッタ
- Goフォーマッタ
- GraphQLフォーマッタ
- HCLフォーマッタ
- INIフォーマッタ
- JSONフォーマッタ
- LaTeXフォーマッタ
- Markdownフォーマッタ
- Objective-Cフォーマッタ
- Php Formatter
- Protoフォーマッタ
- Pythonフォーマッタ
- Rubyフォーマッタ
- Rustフォーマッタ
- Scalaフォーマッタ
- シェルスクリプトフォーマッタ
- SQLフォーマッタ
- SVG フォーマッタ
- Swift フォーマッタ
- TOML フォーマッタ
- Typescript Formatter
- XML フォーマッタ
- YAML フォーマッタ
- Yarn フォーマッタ
- CSSミニファイア
- Html Minifier
- Javascript Minifier
- JSONミニファイア
- XML ミニファイア
- HTTPヘッダービューア
- PDFからテキストへ
- 正規表現テスター
- SERPランクチェッカー
- Whois ルックアップ