Docker / コンテナー

Dockerfileリンター

診断から元の行へ移動し、ステージの区切りと整形結果を確認します。

Dockerfileリンター

Dockerfileソース

結果

ブラウザー内のメモリーで処理します。ビルドやレジストリーへの通信は行いません。

整形オプション

結果が古くなっています。再チェックしてから出力してください。

Dockerfileリンターは、長いファイルのどこでビルド用ステージが終わるか分からなくなったときに役立ちます。元の指令を残したまま構造を読み直せます。

Dockerfile構文チェックとDockerfile整形を分けて扱います。マルチステージビルドの構造は表示しますが、Dockerfile検証の結果だけでイメージが完成するとは判断できません。

Dockerfileリンターで確認できること

FROMから目的の場所へ

Dockerfileリンターは名前のないステージも一覧に残します。カードを選ぶとFROMの行へ移動でき、ビルド用と実行用の指令を区別して読み進められます。

ソースの行と3枚のステージカードの対応を示す図。

整形を別の結果として読む

字下げを変えても入力はすぐには上書きされません。変更行数と結果を見てから適用し、必要なら入力と結果をまとめて元に戻せます。

継続行の字下げ変更を並べ、適用と取り消しを矢印で示す図。

行の位置を見失わずに確認する

01

ステージを展開する

サンプルにはビルド用と実行用のステージがあります。番号はゼロから始まり、名前がなくても移動できます。各命令を展開すると原文と説明が表示されます。

02

自動チェックを使い分ける

編集を止めて350ミリ秒後に更新します。自動を切ると保留中の処理を取り消し、ボタンまたはCtrl/Cmd + Enterで確認できます。古い結果の出力は無効になります。

03

変更行数を確認する

継続行はスペース2個、4個、タブから選択します。既定は4個です。プレビュー後に入力を編集すると、そのプレビューは適用できなくなります。

構文と構造を一緒に読む

位置付きの診断

エラーと警告を分けて表示し、行番号から該当箇所へ移動します。説明の分類は日本語で、展開した詳細にはエンジンの英語メッセージを保持します。

実際に使っている命令の説明

ARGのスコープ、ENVの役割、EXPOSEがポート公開ではないことを確認できます。表示されるshellコマンドは実行も解析もしません。

heredocを保持する

コメント、命令の大小文字と順序を保ちます。heredocの終端不足はエラーです。JSONに見える引数が文字列配列でない場合は、shell形式への解釈を確認する警告になります。

検査の範囲と限界

実行環境は検証しない
RUNの実行、イメージ取得、依存関係の調査、コンテキストの読み込みは行いません。ファイルの存在やビルド成功、脆弱性の有無は判断できません。
専用リンターとは規則が異なる
Hadolint、ShellCheck、BuildKitと同じ検査ではありません。独自frontendは未対応の場合があります。ignoreコメントによる診断抑制は警告で知らせます。
意味を変える修正はしない
指令前の空白、空白だけの行、継続行の字下げを整理します。RUNの統合やパッケージの並べ替えは行いません。COPY --fromの外部イメージ参照も許容します。
入力は1ファイル分
上限はUTF-16コード単位で131072、2000行です。超過時は処理を止め、切り捨てません。リストは50件ずつ表示し、出力にはLF改行の整形結果全体を含めます。

Dockerfileリンターのよくある質問

貼り付けたDockerfileはサーバーに送られますか?

貼り付けた内容はブラウザー内で処理し、整形サーバーやイメージレジストリーに送信しません。ページを再読み込みすると入力は残りません。必要な結果はファイルとして保存してください。

COPYとADDはどう選べばよいですか?

単純なコピーにはCOPYが分かりやすく、ADDにはアーカイブ展開やリモートソースの追加機能があります。このページは目的を推測して両者を置き換えません。

latestタグを使わない方がよいのはなぜですか?

latestは参照先が変わり得るため、再現性を重視する場合はバージョンやdigestを検討します。ただしタグの固定だけでは安全性を保証できず、本ツールはレジストリーを照会しません。

マルチステージビルドは何のために使いますか?

ビルドに必要な環境と実行に必要な成果物を別ステージに分けるためです。ここではFROMごとの区切りを確認できますが、サイズ削減量の計算やステージの最適化は行いません。

hadolintとはどこが違いますか?

使っているエンジンと規則が異なります。HadolintやShellCheckが扱う問題をすべて検出するわけではないため、プロジェクトのCIで必要な検査を別途実施してください。

ほかに質問がありますか?

次の変更を確認する

Dockerfileリンターに戻り、診断またはステージの境界を確認してから、現在のプレビューを保存してください。

静的な確認のあと、実際の環境でもビルドを検証してください。