さくっと環境構築するツール
Pythonとかでちょろっと簡単なスクリプトとかツールを作るときに、PCの環境を汚さず、かつvenvすら使わずコンテナでやりたいなーということが多かったのでさくっと環境を作れるツールをつくりました。
Pythonだけでなくdocker hubにイメージがあればなんでもです。
背景
今まで、手元で以下のような感じで毎回作業していたのでもはや誰でもさくっとつくれるようにしてしまおうと。
- Dockerfileを書く
- docker-compose.yml を書く
- docker-compose up, run,exec
もちろんdocker run python main.py
のようにそもそも簡単にスクリプトを実行するのは可能なのですが、docker-compose.yml
を書いてvolumeをコントロールすることが多かったので少なくとも上に挙げたようなファイルのテンプレートだけでもぽろっと生成できるようにしてもいいなと以前から思ってました。
作っているといろいろと機能が欲しくなり、イメージ名とタグをその場で検索できる機能なども盛り込んでしまいました。
docker search
コマンドで一応イメージを検索できるのですが、タグの一覧が出なくて結局docker hubに見にいくことが多いのでこれもさくっと見つけられるようにしました。
前提
MacであればDocker for Macがインストール済みであること
インストール、使い方
brew tap clover0/qdenv brew install qdenv
qdenv init python:3.8
qdenv enter
docker-composeファイルを作って動かしてるだけなので、docker-compose up, stop,...
で操作しても大丈夫です。
詳しくはリポジトリのREADMEを参照してください。
使ったもの
Go
Goで書いています。以前、コマンドをyamlに書いて平行実行して結果をレポーティングするツールを作ったのですが、これはGo標準のflagパッケージを用いて書いていました。さくっと書けるんですが、やはりやっているとリッチにしたい気持ちが出てきたので今回はcobraを使っています。
以前作ったもの: github.com
Rustでやろうか迷ったんですが、cobraで遊びたい気持ちのが強かったので...。
brew
以前作ったツールではGoReleaserを使ってパッケージングしてダウンロードしてすぐ使えるようにしていました。 今回は、brewでインストールできるようにしたいな、と思ったので試しにできるようにしてみました。
以下を参考にさくっと試してみました。
Homebrewで自作ツールを簡単にインストール可能にする | おそらくはそれさえも平凡な日々
GitHub - mackerelio/homebrew-mackerel-agent: homebrew tap to install mackerel-agent
GoReleaser
brewでインストールできるようにするにも、パッケージングされてる必要はあるのでGoreleaserを使ってます。便利です。