Whalebrewとは?

Homebrew, but with Docker images bfirsh/whalebrew: Homebrew, but with Docker images

とある通り、Homebrewのようなパッケージ管理ツールです。 Homebrewはコマンドをネイティブにインストールするのに対し、 Whalebrewではコマンドを含むDockerイメージを落として来て、コマンドを実行するとDockerコンテナが立ち上がって実行します。 Dockerイメージパッケージ管理ツールみたいなイメージですかね?(混乱)

コマンドをインストールする際に依存するパッケージをインストールしまくるという煩わしさから解放され、環境を汚さないで良いという嬉しさあります。

イケてる感じがしますね。

環境を整える

何はともあれDockerを使用するのだからDockerの環境が必要です。

以降、Mac向けに説明していきます。

Docker を install する

Docker for Macを使いましょう。

Whalebrew を install する

curl -L "https://github.com/bfirsh/whalebrew/releases/download/0.0.4/whalebrew-$(uname -s)-$(uname -m)" -o /usr/local/bin/whalebrew; chmod +x /usr/local/bin/whalebrew

README に書いているまま、楽ですね。

試してみる

どんなパッケージがあるのか調べる

whalebrew search [TERM]

で検索することができます。 TERMを省略すると全てのパッケージを表示してくれるらしい。

whalesay コマンド

$ whalebrew install whalebrew/whalesay
Unable to find image 'whalebrew/whalesay' locally
Using default tag: latest
latest: Pulling from whalebrew/whalesay
0a8490d0dfd3: Pull complete
9ea6bd635aac: Pull complete
a316b39d5e68: Pull complete
f8547c673373: Pull complete
Digest: sha256:817f551e81a73da066ed9d2ff4e1b9359a11aa87502d71116d15687da950582b
Status: Downloaded newer image for whalebrew/whalesay:latest
🐳  Installed whalebrew/whalesay to /usr/local/bin/whalesay

クジラのemojiが可愛いですね。

$ docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
whalebrew/whalesay   latest              7d7121620799        2 weeks ago         46 MB

確かにDockerイメージがDLされているようです。

$ whalesay hello world
 _____________
< hello world >
 -------------
    \
     \
      \
                    ##         .
              ## ## ##        ==
           ## ## ## ## ##    ===
       /"""""""""""""""""\___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
       \______ o           __/
         \    \         __/
          \____\_______/

やったぜ。

awscli

$ whalebrew install whalebrew/awscli

ちょっとどこを参照しているのか見てみましょう。

$ which aws
/usr/local/bin/aws

$ cat /usr/local/bin/aws
#!/usr/bin/env whalebrew
environment:
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
- AWS_DEFAULT_REGION
image: whalebrew/awscli

実行するイメージ、コンテナに渡してくれる環境変数がYAMLで記述されています。 これらの環境変数を渡してあげれば動いてくれるようですね。 詳しくは https://github.com/bfirsh/whalebrew#how-it-works を参照すると良いかと思います。

環境変数を設定して、実行してみます。

$ AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxxxxx\
AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
AWS_DEFAULT_REGION=ap-northeast-1\
aws s3 ls s3://static.xxxx-sandbox.xxxxx.jp/
                           PRE assets/
                           PRE images/

いい感じですね。

所感

結構いい感じです。 どんどん対応するソフトウェアが出てくると嬉しいですね。