Inspired by mortenson/composelist.sh.
jq
is required.
システム開発・データエンジニアリング・データ分析についての個人的なノート
どのディレクトリで Docker Compose プロジェクトを up していたかわからなくなったときのため,
マシン上で起動している Docker Compose プロジェクトをすべて表示するコマンド docker-compose-list-all-projects
と, すべて終了するコマンド docker-compose-down-all-projects
を作成しました.
Inspired by mortenson/composelist.sh.
jq
is required.
#!/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; |
#!/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)' |
コマンドをインストールするにはソースを適当な場所にダウンロードして, パスの通ったフォルダにシンボリックリンクを貼ります.
例えば次のようなコマンドでインストールできます:
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