uokadaの見逃し三振は嫌いです

ここで述べられていることは私の個人的な意見に基づくものであり、私が所属する組織には一切の関係はありません。

Visual studio codeでコンテナ内のhadolintを使うためのTips

What is hadolint?

hadolint は Dockerfileのlinterです。
Dockerfile内でベストプラクティスに沿っていない書き方を見つけて警告を出してくれます。

hadolint for Visual studio code

hadolint - Visual Studio Marketplace

Dockerfileを編集・保存していちいちlinterにかけるのも面倒くさいので他のlinter同様にVS codeの拡張が存在します。
しかし、そこのREADME.mdにはhadolintをhomebrew経由でインストールしたものを利用する方法しか紹介されていません。
自分はdocker container内のhadolintを使いたかったので今回その方法について調べたのでTipsとして残しておきます。

How to use hadolint installed in a container

Add support for running hadolint from docker image · Issue #37 · ExiaSR/vscode-hadolint

幸いなことに、過去にissueが立っていて同じくコンテナの中のhadolintを使う方法について紹介してくれている人がいました。

利用の手順としては次のとおりです。

  1. PATHが通っている適当なディレクトリに下のようなshell scriptを作成します。
    最新のhadolintではエラーや警告に自動的に色付けがされましたが、エディタ内の警告メッセージでは色付けのためのコードがそのまま文字として出力されてしまうため見づらくなってしまいます。 そのため、--no-colorを指定して色付けを無効化します。

     #!/bin/bash
    
     docker run --rm -i hadolint/hadolint:latest hadolint - --no-color < "$@"
    
  2. 上で作ったコマンドをVS codeのhadolintの設定項目から指定する。

拡張が機能すると下のように警告があれば下線が引かれてエラーのレベルと内容が出るようになります。

f:id:uokada:20210313145315p:plain
Visual studio codeの編集画面

たった2つの手順で簡単にVS codeでhadolintを使うことが出来るようになりました。
以上、簡単なtipsでしたが日々のDockerfile編集が楽になれば幸いです。

Enjoy your docker life!