0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker Composeコマンドをちょっと便利にするCLIアプリを作った

0
Last updated at Posted at 2026-06-14

挨拶

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に公開するにあたってテストコードも充実させたので、安心して使ってもらえるはずです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?