Dockerfileのチェックしてくれるhadolint: YUU MEDIA TOWN@Blog

封神龍(酒)の日記です、気になるニュースなどもチェック!ゾイド(ZOIDS)とかMacとかUNIXとかwindowsとかアニメ・漫画とかゲームとか雑記とか備忘録とか北海道とかお酒とか。検索エンジン経由来訪でお探しのキーワード関連記事が見つからない方はこちら祝!HP爆誕25周年!!

2023年02月24日 (金曜日)

Dockerfileのチェックしてくれるhadolint

最近はDockerの勉強しておりますがたまたまはてなブックマーク見ていたら
Dockerfile自信持って書けてますか?おすすめlintツール 「hadolint」について紹介 - Qiita
というのが目に付きました。Dockerfileの書式をチェックしてくれるのか。

試しに
Intel Mac(x86)のmac(2022年11月08日 (火曜日))
環境に入れてみる事に。

LinuxというかCent OS7だと
sudo curl -L https://github.com/hadolint/hadolint/releases/download/v2.8.0/hadolint-Linux-x86_64 -o /usr/local/bin/hadolint
したあと
chmod 755 /usr/local/bin/hadolint
単一バイナリでダウンロードした後の実行権限つけるだけか。yumではないのね。

Macだと
brew install hadolint
だけで済むのか。

こちらの本
Docker Desktop for Windows/Macでつくるクリーンな開発環境構築入門(Python版) Kindle版をダウンロード購入(2022年12月10日 (土曜日))
を参考に作った
ohtakazuki/dockerenv
この中にあるex03フォルダの奴ですね。

--------------------------
FROM ubuntu:22.04

# Nginxのインストール
RUN apt-get update -qq \
&& apt-get install -y --no-install-recommends \
nginx tzdata \
&& rm -rf /var/lib/apt/lists/*

# 環境変数の定義
ENV TZ="Asia/Tokyo"

# ポートの指定
EXPOSE 80

# ファイルのコピー
COPY src/index.html /var/www/html/

# Nginxの起動
CMD ["nginx", "-g", "daemon off;"]
--------------------------

このDockerfileを
hadolint Dockerfile
するとエラーではないのでしょうが
./Dockerfile:4 DL3008 warning: Pin versions in apt get install. Instead of `apt-get install ` use `apt-get install =`
とこうした方がいいよ、的なアドバイスも。

他のもテストしてるとアドバイスやエラーがないのはなにも表示されないですね。

Windows 11の方のUbuntu(WSL)の方でやってもダウンロードが出来ない、なんでや?と思ったら例のごとくESETがブロックしていた。
WSLのLinuxが通信しようとするとブロックしちゃうようで。まあESETは悪くないよね、怪しいよね、WindowsなのにLinuxの通信。という事でWSLなLinux(Ubuntu 22.04.1 LTS (GNU/Linux 5.15.79.1-microsoft-standard-WSL2 x86_64))で通信する時はESETの「ファイアーウォールを無効にする(全ての通信を許可)」に設定、作業が終わったらファイアーウォールを有効にする事に。(ブロックしてる通信見ているとDNSへのアクセスを遮断しているようだ、試しにドメイン名じゃなくてIPアドレスで通信を試みたら問題なくいけた・・・が、どちらにしてもWSLの環境で通信する時はESETのファイアーウォールをOFFにしなきゃ駄目ね。)

前もってhadolintを入れてVSCodeでも拡張いれれば
hadolint - Visual Studio Marketplace
VSCodeでも使えるようになるらしいので。

という事で入れてみた。入れても
hadolint: Cannot find hadolint from system $PATH. Please install hadolint.
とhadolintのパスを指定してね、という事で
VSCodeの拡張のhadolintの設定から
拡張のhadolintの設定から
hadolintのパス
hadolintのパスを設定します。
試したけど
\\wsl.localhost\Ubuntu\usr\local\bin\hadolint
もしくは
/usr/local/bin/hadolint
どちらでも良さそう。

で使ってみようと思ったら
Please visit [ExiaSR/vscode-hadolint#44](https://github.com/ExiaSR/vscode-hadolint/issues/44#issuecomment-808756114). You may be using an outdated version of hadolint or you are running hadolint in Docker.
というエラー。
「古いバージョンの hadolint を使用しているか、Docker で hadolint を実行している可能性があります。」
え?ああそうか、Verは一番上のサイトを参照しているから微妙に低い、という事で
Releases · hadolint/hadolint
から本日では最新Verを探しだし
sudo curl -L https://github.com/hadolint/hadolint/releases/download/v2.12.0/hadolint-Linux-x86_64 -o /usr/local/bin/hadolint
をダウンロードして実行権限付与。

駄目だな・・・・・
Docker で hadolint を実行は
Docker Desktop
ダウンロードしたイメージはあるけどコンテナとして実行はしてないぞ・・・・念のため、イメージも削除。

それでも駄目。

PowerShellのwsl後にはちゃんとhadolintは実行出来ます。

・・・ひとまずVSCodeとの連携はおいとくか・・・・・


hadolint で Dockerfile の内容をチェックする | らくがきちょう v3
単純にDocke Desktop立ち上げて
シェルから
docker run --rm -i hadolint/hadolint < Dockerfile
は動いた。


Posted by 封神龍(酒) at 2023年02月24日 08:33 | 【所属カテゴリ: Linux】【コメントについて】【トラッくバックについて】【RSS登録についてRSS登録

--



--


--