clover0x1’s diary

えんじにありんぐブログ

さくっと環境構築するツール

Pythonとかでちょろっと簡単なスクリプトとかツールを作るときに、PCの環境を汚さず、かつvenvすら使わずコンテナでやりたいなーということが多かったのでさくっと環境を作れるツールをつくりました。

Pythonだけでなくdocker hubにイメージがあればなんでもです。

github.com

背景

今まで、手元で以下のような感じで毎回作業していたのでもはや誰でもさくっとつくれるようにしてしまおうと。

  1. Dockerfileを書く
  2. docker-compose.yml を書く
  3. 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

動かしたいスクリプトがあるところで(例えばPython)

qdenv init python:3.8
qdenv enter

docker-composeファイルを作って動かしてるだけなので、docker-compose up, stop,...で操作しても大丈夫です。

詳しくはリポジトリのREADMEを参照してください。

使ったもの

Go

Goで書いています。以前、コマンドをyamlに書いて平行実行して結果をレポーティングするツールを作ったのですが、これはGo標準のflagパッケージを用いて書いていました。さくっと書けるんですが、やはりやっているとリッチにしたい気持ちが出てきたので今回はcobraを使っています。

以前作ったもの: github.com

cobra github.com

Rustでやろうか迷ったんですが、cobraで遊びたい気持ちのが強かったので...。

brew

以前作ったツールではGoReleaserを使ってパッケージングしてダウンロードしてすぐ使えるようにしていました。 今回は、brewでインストールできるようにしたいな、と思ったので試しにできるようにしてみました。

以下を参考にさくっと試してみました。

Homebrewで自作ツールを簡単にインストール可能にする | おそらくはそれさえも平凡な日々

GitHub - mackerelio/homebrew-mackerel-agent: homebrew tap to install mackerel-agent

GoReleaser

brewでインストールできるようにするにも、パッケージングされてる必要はあるのでGoreleaserを使ってます。便利です。

goreleaser.com