半年ぶりの更新。
ちょいちょい記事は書いているのですがオレオレ備忘録すぎる内容ばかりで公開出来ていませんでした。。
hadolintとは
- Dockerfileの静的解析ツール
- VSCode用の拡張機能がある
- hadolintを別途インストールしておく必要あり(パス設定して使う)
今回、WindowsとWSL(Ubuntu)のそれぞれにhadolintをインストールしてるのは、Dockerfileを持つプロジェクトがWindowsとWSL配下のそれぞれにあることが理由です。
そのため、WSL環境に完全移行しているという方の場合、Windows側のインストール作業は不要になります。
Windowsにhadolintをインストール
Windowsへのhadolintのインストールは以下の記事の通りに進めました。
参考:【Docker修行③】静的解析ツール「hadolint」を利用して、効率的にベストプラクティスに基づいたDockerfile記述 – Qiita
-
- PowerShellでscoopというパッケージ管理ツールをインストール
PS > Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force PS > iwr -useb get.scoop.sh | iex
- パッケージ管理ツールからhadolintをインストール
PS > scoop install hadolint
- hadolintのインストール先を確認(後でパス設定で使う)
PS > gcm hadolint CommandType Name Version Source ----------- ---- ------- ------ Application hadolint.exe 0.0.0.0 C:\Users\[ユーザー名]\scoop\shims\hadolint.exe
- PowerShellでscoopというパッケージ管理ツールをインストール
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の拡張機能をインストール&パス設定
その他 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" ] }