linterとは
ソフトウェア開発における静的解析とは、プログラムを実行する前にソースコード自体の解析を行うことです。この解析によって、
- コーディング時にエラーが発生していないか
- コーディングルールに沿ったコーディングがされているか
といったことを、開発の早い段階で検出することができます。
このような静的解析を行うツールを、静的解析ツール、あるいは「linter」と呼びます。
Hadolintとは
Dockerfileを書く際には、公式ドキュメントで提供されている「Dockerfileを書くベストプラクティス」は非常に有用です。このドキュメントには、Dockerfileを効果的に作成するためのアドバイスやガイドラインが詳細に記載されています。
ただし、毎回このベストプラクティスを意識してDockerfileの中身を記載するのはなかなか大変な作業です。 Dockerfileは、Dockerイメージを構築するための指示を記述するファイルです。このファイルには、ベースイメージの選択、依存関係のインストール、環境変数の設定など、コンテナのビルドに必要な手順を記述しますが、これらをベストプラクティスに沿って記述するのはかなり時間と労力がかかります。
Hadolintは、そのようなときに役立つツールです。Hadolintを使用すると、以下のメリットがあります。
- シンタックスエラー(構文誤り)を未然に防げる
- 自然とベストプラクティスに沿ったDockerfileを記述できる
Hadolintの使い方
では、Hadolintを使い方を説明します。
// インストール方法
// Macの場合
brew install hadolint
// Linuxの場合
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
インストールが完了すれば、以下のコマンドでHadolintを利用することができます。
hadolint Dockerfile
では、実際に使ってみましょう。
ファイル名:Dockerfile
FROM centos:7
RUN yum install -y java
ADD files/apache-tomcat-9.0.6.tar.gz /opt/
CMD [ "/opt/apache-tomcat-9.0.6/bin/catalina.sh", "run" ]
hadolint Dockerfileの実行例
Dockerfile:2 DL3032 warning: `yum clean all` missing after yum command.
Dockerfile:2 DL3033 warning: Specify version with `yum install -y <package>-<version>`.
warningで、2件指摘されていることが分かります。
まとめ
Dockerfileのlinterである、Hadolintについて基本的な内容を説明してきました。
Dockerfileの静的解析を実施していない方は、ぜひ使ってみていただければと思います。