DockerfileのLinterでhadolintなるものがあるそうなので使ってみた

ソース

解析するソースは、DockerのMulti Stage Buildでgolang環境のDockerfile書いた時のメモで書いたDockerfile

nobiki/docker-base:1.0

インストール

ダウンロードしてPATHの通ってる所に置くだけです

1
2
3
$ wget "https://github.com/hadolint/hadolint/releases/download/v1.15.0/hadolint-Linux-x86_64" -P ~/bin/
$ mv ~/bin/hadolint-Linux-x86_64 ~/bin/hadolint
$ chmod +x ~/bin/hadolint

使ってみる

そのまま解析すると、以下のように出力されました

1
2
3
$ hadolint Dockerfile
Dockerfile:12 DL3020 Use COPY instead of ADD for files and folders
Dockerfile:16 DL3006 Always tag the version of an image explicitly

それぞれ翻訳してみる

1
2
3
4
5
$ trans -b :ja "Dockerfile:12 DL3020 Use COPY instead of ADD for files and folders"
Dockerfile:12 DL3020 ファイルとフォルダにADDの代わりにCOPYを使用する

$ trans -b :ja "Dockerfile:16 DL3006 Always tag the version of an image explicitly"
Dockerfile:16 DL3006 明示的にイメージのバージョンにタグを付ける

この時、バージョンにlatestを指定したら、以下の物も出ました

1
2
$ trans -b :ja "Using latest is prone to errors if the image will ever update. Pin the version explicitly to a release tag"
最新のものを使用すると、イメージが更新されるとエラーが発生しやすくなります。バージョンを明示的にリリースタグに固定する

ということで修正します(commit

1
$ hadolint Dockerfile

何もでなくなったら解析終了です