🔔

aquaでdocker-composeを管理するときにハマった

2025/01/06に公開

はじめに

aqua で docker compose を管理するときにつまったのでメモ。
aqua とは CLI のバージョン管理ツールです。詳しくは aqua CLI Version Manager 入門(zenn_book) を読んでください。
自分の用途としては aqua と Renovate を組み合わせて CLI のバージョンを自動で更新してもらっています。

内容

Release v3.13.0 · aquaproj/aqua-registry を読んでもらえば解決しますが流れをメモしておきます。

何が起こったか

aqua で docker compose をインストールしたのに下記のように compose コマンドが使えない。

$ docker compose
docker: 'compose' is not a docker command.
See 'docker --help'

原因

docker compose などの plugin は $HOME/.docker/cli-plugins に配置され、読み込まれる仕様になっている。
一方 aqua でインストールした場合は $HOME/.local/share/aquaproj-aqua/bin に docker-cli-plugin-docker-compose が配置される。
$HOME/.docker/cli-plugins に docker-compose が配置されていないため、compose なんてコマンドはないよと言われてしまう。

解決策

1. aqua で管理されている docker-cli-plugin-docker-compose を呼び出すためのラッパースクリプトを $HOME/.docker/cli-plugins に配置する

~/.docker/cli-plugins/docker-compose
#!/bin/sh
exec aqua exec -- docker-cli-plugin-docker-compose "$@"
コマンドの説明
  • aqua exec は、aqua を使って CLI ツールを実行できる。
  • -- 以降に記述された内容はすべて引数として解釈される。
    ここでは、aqua に対して「これ以降の引数(=docker-cli-plugin-docker-compose "$@")」をそのまま渡すよう指示している。
  • $@ はシェルスクリプト内で使われる特殊変数であり、「スクリプトに渡されたすべての引数」を展開する。

2. 実行権限を付与する

chmod u+x $HOME/.docker/cli-plugins/docker-compose

これで docker compose が使えるようになります。

感想

Docker CLI plugin についての知識も深まったので良かった。

参考

GitHubで編集を提案

Discussion