Whalebrewとは?
Homebrew, but with Docker images
bfirsh/whalebrew: Homebrew, but with Docker images
とある通り、Homebrewのようなパッケージ管理ツールです。
Golangで書かれています。
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/
いい感じですね。
所感
結構いい感じです。
どんどん対応するツールが出てくると嬉しいですね。