スポンサーリンク

WindowsとWSL(Ubuntu)にそれぞれhadolintを導入、VSCodeでDockerfileの静的解析を行えるようにする

半年ぶりの更新。
ちょいちょい記事は書いているのですがオレオレ備忘録すぎる内容ばかりで公開出来ていませんでした。。

hadolintとは

  • Dockerfileの静的解析ツール
  • VSCode用の拡張機能がある
    • hadolintを別途インストールしておく必要あり(パス設定して使う)

今回、WindowsとWSL(Ubuntu)のそれぞれにhadolintをインストールしてるのは、Dockerfileを持つプロジェクトがWindowsとWSL配下のそれぞれにあることが理由です。
そのため、WSL環境に完全移行しているという方の場合、Windows側のインストール作業は不要になります。

Windowsにhadolintをインストール

Windowsへのhadolintのインストールは以下の記事の通りに進めました。
参考:【Docker修行③】静的解析ツール「hadolint」を利用して、効率的にベストプラクティスに基づいたDockerfile記述 – Qiita

    1. PowerShellでscoopというパッケージ管理ツールをインストール
      PS > Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
      PS > iwr -useb get.scoop.sh | iex
    2. パッケージ管理ツールからhadolintをインストール
      PS > scoop install hadolint
    3. hadolintのインストール先を確認(後でパス設定で使う)
      PS > gcm hadolint
      
      CommandType     Name            Version    Source
      -----------     ----            -------    ------
      Application     hadolint.exe    0.0.0.0    C:\Users\[ユーザー名]\scoop\shims\hadolint.exe

WSL(Ubuntu)にhadolintをインストール

以下のようなコマンドでインストールしました。
curlで指定してるパスはGitHubリポジトリのリリース一覧から取得できました。

今回は用途(Ubuntu)に沿うhadolint-Linux-x86_64のリンクを指定。

$ sudo curl -L https://github.com/hadolint/hadolint/releases/download/v2.10.0/hadolint-Linux-x86_64 -o /usr/local/bin/hadolint
$ sudo chmod +x /usr/local/bin/hadolint

VSCodeにhadolintの拡張機能をインストール&パス設定

  1. Remote-WSLを使っているとき/使ってないときのそれぞれでhadolint拡張機能をインストール
  2. ユーザー設定を開き「hadolint」と入力し設定項目を絞り込む

    1. 「ユーザー」タブのHadolint Pathに以下設定
      C:\\Users\\[ユーザー名]\\scoop\\shims\\hadolint.exe
    2. 「リモート [WSL: Ubuntu-20.04]」タブのHadolint Pathに以下設定
      /usr/local/bin/hadolint
    3. Remote-WSLを使っているとき/使っていないときのプロジェクトそれぞれでDockerfileを開きlintが効いてることを確認

その他 DL3008について除外設定

DL3008という指摘が何を意味しているかは公式のWikiを見ると良いと思います。
https://github.com/hadolint/hadolint/wiki/DL3008

インストールするパッケージについてバージョンを明記するのが良いという指摘で、以下のように修正することでアラートが消えます。

FROM busybox

-RUN apt-get install python
+RUN apt-get install python=2.7

設定しておくことで環境構築した時期による周辺パッケージのバージョンの差異を少なくすることができる(と思われる??)

ただし、

  • 1つ1つインストールされるバージョンを調べて明記していくのはかなり面倒
  • アップデートするのに手動のメンテナンス作業が必要となってしまう

といった理由からこれは除外するべき設定なんじゃないかなと思いました。
どっちかというと周辺パッケージは常に最新のバージョンがインストールされていて欲しいし、何か問題が見つかったときにそのパッケージだけ固定した方が管理しやすい気がします。。

VSCodeの拡張機能では以下のように設定することで除外できました(ユーザー設定とリモート設定それぞれで設定)。

{
    "hadolint.hadolintPath": "C:\\\\Users\\\\[ユーザー名]\\\\scoop\\\\shims\\\\hadolint.exe",
    "hadolint.cliOptions": [
        "--no-color",
+        "--ignore=DL3008"
    ]
}
{
    "hadolint.hadolintPath": "/usr/local/bin/hadolint",
    "hadolint.cliOptions": [
        "--no-color",
+        "--ignore=DL3008"
    ]
}

 

タイトルとURLをコピーしました