Loading…

概要 無料オンライン Dockerfile フォーマッター

Dockerfile が乱れていませんか?壊れたインデント、一貫性のないスペース、読みにくい RUN チェーン?この Dockerfile フォーマッターは、dprint ベースのエンジン(安全なバックエンド経由)を使用して、クリーンで意見のあるレイアウトであなたの Dockerfile と Containerfile を正規化します。指示を正確に保持しながら、ファイルをレビュー、バージョン管理、環境間での自動化が容易にします。

Dockerfile フォーマッターの主な機能

  • Dockerfile と Containerfile のインデント、スペース、行折り返しをクリーンアップ
  • 一貫したバックスラッシュとインデントで複数行 RUN 命令を正規化
  • Dockerfile のセマンティクスを尊重 – 命令の並べ替えなし、シェルロジック変更なし
  • 決定論的出力:同じ入力とバージョン ⇒ 同じ整形済み Dockerfile
  • dprint を使用する pre-commit フック、モノレポ、CI ジョブに最適な相棒
  • シンタックスハイライト、差分対応出力、コピー/ダウンロード機能付き Web ベースエディタ
  • マルチステージビルド、ビルド引数、典型的な Node/.NET/Go イメージに適応

🛠️ Dockerfile のフォーマット方法 for dockerfile-formatter

1

1. Dockerfile を貼り付けるかアップロード

エディターにDockerfileを貼り付けるか、プロジェクトからDockerfile/Containerfileをドロップしてください。実験したいだけの場合は、小さなスニペット(単一のFROM/RUNブロックなど)も使用できます。

2

2. フォーマッターを実行

「フォーマット」をクリックします。このツールはソースを安全なdprintベースのバックエンドに送信し、実行ロジックに触れることなくインデント、スペース、配列形式の命令、複数行のRUNチェーンを調整します。

3

3. 確認、コピー、またはダウンロード

フォーマットされた出力を元のファイルと比較します。満足したら、結果をリポジトリにコピーするか、フォーマットされたDockerfileをダウンロードして直接コミットしてください。

技術詳細

対応ファイルタイプ

このフォーマッターは、Docker、Podmanおよび類似ツールで使用されるDockerビルド命令と互換性のあるコンテナビルドファイルを対象としています。

タイプ備考
DockerfileDockerfile, Dockerfile.prod, Dockerfile.node18イメージ用の従来のDockerビルドファイル
ContainerfileContainerfilePodman / 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

フォーマットはイメージビルドに影響しますか?

いいえ。フォーマッターは空白、インデント、行折り返しのみを変更します。Dockerfile命令の順序と内容は保持されます。元のDockerfileが有効であれば、結果のイメージビルドは同じように動作します。

これはhadolintでのリンティングと同じですか?

いいえ。このツールはフォーマッターであり、リンターではありません。スタイルとレイアウトの問題(間隔、インデント、折り返し)を修正しますが、ベストプラクティス(特定のベースイメージ、ヘルスチェック、レイヤーサイズの使用など)については警告しません。そのためには、hadolintや他のDockerfileリンターと組み合わせて使用してください。

このスタイルをCIで強制できますか?

はい。リポジトリでDockerfileプラグインを使用してdprintを設定し、CIパイプラインで `dprint fmt`(または `dprint check`)を実行できます。これにより、Dockerfileが期待されるスタイルから逸脱した場合にCIを失敗させることができ、このオンラインフォーマッターで表示される内容と一致します。

マルチステージビルドはサポートされていますか?

はい。マルチステージDockerfileは他のファイルと同様にフォーマットされます。各FROM、COPY、RUN、ENV命令は保持され、ビルドセマンティクスを変更することなくすべてのステージでレイアウトが一貫性を持たせられます。

私のDockerfileはサーバーにアップロードされますか?

このツールでは、フォーマットはdprintベースのフォーマッターを使用した安全なバックエンドエンドポイントで実行されます。ソースは応答を計算するために使用され、長期的に保存されることは意図されていません。常に、完全なスタックを制御していない限り、機密性の高いインフラストラクチャの詳細をオンラインツールに貼り付けることは避けてください。

Pro Tips

Best Practice

CIで自動的にフォーマットを実行し、Dockerfileのスタイルがサービスやチーム間でずれないようにする。

Best Practice

このフォーマッターをhadolintのようなリンターと組み合わせて、レイアウトとベストプラクティスの両方をカバーする。

Best Practice

プロジェクトの早い段階で標準的なマルチステージDockerfileテンプレートに合意し、フォーマットを維持して新しいサービスが同じ構造に従うようにする。

Best Practice

モノレポで作業する場合は、単一のdprint設定を共有し、アプリケーションコード、インフラコード、Dockerfileが一貫した規約を使用するようにする。

Additional Resources

Other Tools