🔔
aquaでdocker-composeを管理するときにハマった
はじめに
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 なんてコマンドはないよと言われてしまう。
解決策
$HOME/.docker/cli-plugins
に配置する
1. aqua で管理されている docker-cli-plugin-docker-compose を呼び出すためのラッパースクリプトを ~/.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 についての知識も深まったので良かった。
Discussion