挨拶
docker composeコマンドは打つ頻度が高くそれなりに長いコマンドとなることが多いため、すでにエイリアスなどで便利に使用している方も多いような気もします。
なので需要は不明ですが、紹介させてください。
docker composeコマンドのラッパーアプリケーション
Compose Lazy という名前のアプリケーションです。
Pythonに親しんでいる方であれば、
uv tool install compose-lazy または pipx install compose-lazy
で即座に使用可能です。
機能1. 単純なエイリアス + インタラクティブ選択機能
docker composeコマンドはオプションの引数を足すと結構長くなります。例を一つ上げます。
$ docker compose -f docker-compose.prod.yml up --build
このコマンドは以下のように短縮して入力でき、-fオプションによってディレクトリ内のファイルをインタラクティブに選択することが可能です。
$ dcpu -b -f
✅️ Found 2 compose files!
1. docker-compose.yml
2. docker-compose.prod.yml
Enter your choices (e.g., 1,3,4) or 'q' to quit: 2 # 2を入力
▷ Executing `docker compose -f docker-compose.prod.yml up`.
...
プロファイルやサービスの選択肢を立ち上げるオプション引数(-pf, -s)もあり、ファイル名などの長い引数を入力する必要性がなくなります。
また、up以外のコマンドについても、build/exec/ps/logs/restart/downなど基本的なコマンドには対応しています。
機能2. リポジトリ登録機能(「ワークスペース」管理機能)
通常docker composeコマンドは、カレントディレクトリ内のDockerComposeファイルしか認識しません。
$ docker compose up # 違うディレクトリで実行(例: Homeディレクトリ)
no configuration file provided: not found # いちいちcdを入力する必要がある
そこで、プロジェクトのディレクトリを設定ファイルに登録する機能を作りました。
一度登録すれば、cdせずどこからでも任意のコンテナを起動可能です。
$ dcp ws reg # 登録用コマンド. `dcp workspace register` の略
Please enter a new directory path: ./myproject
✅️ Compose file found: docker-compose.yml
Enter a new workspace name: my workspace # 任意のワークスペース名を入力
✅️ Registered a new repo to my workspace: /path/to/projects/myproject (docker-compose.yml)
Enter 'l' to see the workspace or exit... : l
───── my workspace ──────────────────────────────────────
📁 PATH[1]: /path/to/projects/myproject
FILES: docker-compose.yml # 起動したいyamlファイルとともにディレクトリが登録される
💡 To get all workspace lists, run `dcp ws list(li)`.
# 登録済みリポジトリはどこからでもcompose up
$ dcp ws up
───── 📂 myproject ─────────────────────────────────────────────────────────────────────────────────
▷ Executing `docker compose -f docker-compose.yml up -d` in MYPROJECT.
...
機能3. 複数リポジトリ一括docker compose
上述したリポジトリは「ワークスペース」という単位の中に登録されます。
ここには、名前から察せるとおり複数登録が可能です。
dcp wsコマンドは、ワークスペース内に存在するすべてのリポジトリに対して一括でdocker composeコマンドを実行します。
$ dcp ws reg
Please enter a new directory path: ./otherproject
✅️ Compose file found: docker-compose.yml
✅️ Found 1 registered workspace!
1. my workspace
── Or enter 0 for a new entry.
Enter your choice or 'q' to quit: 1 # 既存の`my workspace`に追加
✅️ Registered a new repo to my workspace: /path/to/projects/otherproject (docker-compose.yml)
Enter 'l' to see the workspace or exit... :
💡 To get all workspace lists, run `dcp ws list(li)`.
# すべてのリポジトリに対し一発のコマンドでコンテナ起動する
$ dcp ws up
───── 📂 myproject ─────────────────────────────────────────────────────────────────────────────────
▷ Executing `docker compose -f docker-compose.yml up -d` in MYPROJECT.
...
───── 📂 otherproject ──────────────────────────────────────────────────────────────────────────────
▷ Executing `docker compose -f docker-compose.yml up -d` in OTHERPROJECT.
...
dcp wsコマンドを使えば、別のリポジトリのターミナルからでもいちいち画面遷移せずに、特定のリポジトリだけを選択的にrestartすることなども可能です。
おわりに
機能はシンプルでコード上でも複雑なことはしていないですが、自分としては便利なものに仕上がり気に入っているため、こちらで紹介させていただきました。
詳しいインストール方法はGitHubリポジトリから、また他の主要なコマンドはこちらのリンクで確認可能です。
PyPIに公開するにあたってテストコードも充実させたので、安心して使ってもらえるはずです。