Dockerを使って開発を行う機会が増えています。Dockerfileも徐々に複雑になっていたり、メンテナンスが大変になっていないでしょうか。正しく描いておかないと、別な環境でビルドしたら動かないなんてこともあります。 そこで使ってみたいのがhadolintです。DockerfileのLintツールです。

hadolintの使い方

hadolintを実行します。

$ hadolint --config .hadolint.yaml Dockerfile
Dockerfile:3 DL3018 Pin versions in apk add. Instead of `apk add <package>` use `apk add </package><package>=<version>`
Dockerfile:7 DL3018 Pin versions in apk add. Instead of `apk add <package>` use `apk add </package><package>=<version>`
Dockerfile:10 DL3002 Last USER should not be root
Dockerfile:30 DL3018 Pin versions in apk add. Instead of `apk add <package>` use `apk add </package><package>=<version>`
Dockerfile:32 SC2236 Use -n instead of ! -z.
Dockerfile:32 DL3018 Pin versions in apk add. Instead of `apk add <package>` use `apk add </package><package>=<version>`

様々なエラーが出ています。例えばイメージファイルのバージョンをちゃんと指定すべきであったり、ユーザで実行するっといったいった注意が出ます。hadolintの指摘に沿ってDockerfileを変更しておくことで、不具合の発生を防止できるでしょう。

hadolintはHaskell製のオープンソース・ソフトウェア(GPL v3)です。

hadolint/hadolint: Dockerfile linter, validate inline bash, written in Haskell