/* terashim.com */

システム開発・データエンジニアリング・データ分析についての個人的なノート

起動しているすべての Docker Compose プロジェクトを表示 / 終了する

どのディレクトリで Docker Compose プロジェクトを up していたかわからなくなったときのため, マシン上で起動している Docker Compose プロジェクトをすべて表示するコマンド docker-compose-list-all-projects と, すべて終了するコマンド docker-compose-down-all-projects を作成しました.

ソース

view raw readme.md hosted with ❤ by GitHub
#!/usr/bin/env bash
#
# Down all running Docker Compose projects
#
docker ps --filter "label=com.docker.compose.project" -q |\
xargs docker inspect |\
jq -r 'map( .Config.Labels ) |
map({"
project": ."com.docker.compose.project",
"working_dir": ."com.docker.compose.project.working_dir",
"config_files": (."com.docker.compose.project.config_files" | split(","))
}) |
unique |
sort_by(.project) |
.[] |
"cd " + .working_dir + " && docker compose " + ( .config_files | map("-f " + .) | join(" ")) + " down"' |\
xargs -IXXX bash -c XXX;
view raw dc-down-all.sh hosted with ❤ by GitHub
#!/usr/bin/env bash
#
# List all running Docker Compose projects
#
docker ps --filter "label=com.docker.compose.project" -q |\
xargs docker inspect |\
jq -r 'map( .Config.Labels ) |
map({
"project": ."com.docker.compose.project",
"working_dir": ."com.docker.compose.project.working_dir",
"config_files": (."com.docker.compose.project.config_files" | split(","))
}) |
unique |
sort_by(.project)'
view raw dc-ls.sh hosted with ❤ by GitHub

インストール

コマンドをインストールするにはソースを適当な場所にダウンロードして, パスの通ったフォルダにシンボリックリンクを貼ります.

例えば次のようなコマンドでインストールできます:

INSTALL_DIR=$HOME/ghq/gist.github.com/19f7e1b314f8a8904bed565c90972b59 # 例
mkdir -p $INSTALL_DIR
git clone [email protected]:19f7e1b314f8a8904bed565c90972b59.git $INSTALL_DIR

ln -s $INSTALL_DIR/docker-compose-list-all-projects.sh /usr/local/bin/docker-compose-list-all-projects
ln -s $INSTALL_DIR/docker-compose-down-all-projects.sh /usr/local/bin/docker-compose-down-all-projects

また, もしまだなら jq をインストールしておく必要があります.

使い方

マシン上で起動中のすべての Docker Compose プロジェクトを表示するには

docker-compose-list-all-projects

マシン上で起動中のすべての Docker Compose プロジェクトを停止するには

docker-compose-down-all-projects

とします.

長いので適当なエイリアスを付けるといいかもしれません:

alias dc-list=docker-compose-list-all-projects
alias dc-down-all=docker-compose-down-all-projects

アンインストール

不要になった場合はシンボリックリンクとソースを削除します:

INSTALL_DIR=$HOME/ghq/gist.github.com/19f7e1b314f8a8904bed565c90972b59 # 例

unlink /usr/local/bin/docker-compose-list-all-projects
unlink /usr/local/bin/docker-compose-down-all-projects
rm -rf $INSTALL_DIR