TL;DR
- https://hub.docker.com/r/koalaman/shellcheck/
- https://gist.github.com/gongo/5028eabe139f01f4e3d2e05e6633fb1f
経緯
- シェルスクリプトを書く時、ちょくちょく shellcheck のお世話になる
- いざ実行しようとすると、このマシン shellcheck インストールしてないじゃん!!となる
- インストールするかー。Debian や CentOS であれば apt や yum のリポジトリ提供されてるな
でも今は macOS 使ってるから、 ドキュメント に従って
$ brew install shellcheck
ビルド終わるまで待つか
_人人人人人人人人人人人人人人_ > 一時間待っても終わらない <  ̄YYYYYYYYYYYYYY ̄
私の環境だけかもしれませんが、めっちゃ時間かかります。 もちろん、一度ビルドしてしまえばあとは問題なく使えますが、 何かしらの理由で新しい環境に移行した時、またこの時間を過ごすのはよくない。どうにかしたい!!
Docker イメージ
そんなわけで、「ビルドした shellcheck バイナリを持った Docker イメージでもあればいいのでは?」と安易に考え、 とりあえず Docker Hub で探したら当然のように shellcheck 公式の Docker Image が見つかりました。
https://hub.docker.com/r/koalaman/shellcheck/
使い方はドキュメントのとおり
$ docker pull koalaman/shellcheck $ docker run -v $(pwd):/scripts koalaman/shellcheck /scripts/myscript.sh
docker run
するスクリプト
問題なく動きましたが、しかし毎回 docker run ...
と書くのもめんどくさいので、適当に runner を作りました。
#!/bin/sh ( dir="$(cd "$(dirname "$1")" && pwd)" name="$(basename "$1")" docker run --rm -v "${dir}:/scripts" koalaman/shellcheck "/scripts/${name}" )
こいつをてきとうな名前(私は同名 shellcheck
にしました)で保存しておけば
$ shellcheck /path/to/script.sh
ってやると実行してくれます。
まとめ
最近(結構前からかな)は各ツールや環境を Docker コンテナに分離する流行を感じるので、追っ掛けてみました。便利。