概要
docker コマンドを実行した際にコンテナ名やイメージ名を補完してくれないと面倒です
今回は Mac 上の zsh を使っている場合に補完する方法を紹介します
環境
- macOS 10.15.6
- zsh 5.7.1
zsh-completions のインストール
brew install zsh-completions
.zshrc への追記
vim ~/.zshrc
if type brew &>/dev/null; then
FPATH=$(brew --prefix)/share/zsh-completions:$FPATH
autoload -Uz compinit
compinit
fi
mac の場合 zsh-completions のスクリプトを管理するパスは /usr/local/share/zsh-completions/
になっています
ディレクトリの権限変更
chmod go-w '/usr/local/share'
これを実行しないと zsh compinit: insecure directories, run compaudit for list.
で怒られます
docker-compose 用の補完スクリプトを配置
curl -L https://raw.githubusercontent.com/docker/compose/1.26.2/contrib/completion/zsh/_docker-compose > $(brew --prefix)/share/zsh-completions/_docker-compose
Mac の場合は Docker for Mac に含まれているのでそれを zsh-completions ディレクトリにシンボリックリンクすれば OK です
またシンボリックを貼るディレクトリは /usr/local/share/zsh-completions
ではなく usr/local/share/zsh/site-functions/
なので注意しましょう
ln -s /Applications/Docker.app/Contents/Resources/etc/docker-compose.zsh-completion /usr/local/share/zsh/site-functions/_docker-compose
docker コマンドおよびイメージ名やコンテナ名の補完スクリプトを配置
ln -s /Applications/Docker.app/Contents/Resources/etc/docker.zsh-completion /usr/local/share/zsh/site-functions/_docker
zcompdump の再生成
rm -f ~/.zcompdump; compinit
シェルの再ログイン
これでターミナルを一度 exit して再度ログインすれば補完してくれます
/usr/local の部分は brew --prefix の値になるのでリンクする場合も $(brew --prefix)/ で置き換えたほうが楽です
返信削除