コマンドライン補完
Compose には bash 用あるいは zsh 用の コマンド補完(command completion)が用意されています。
コマンド補完のインストール
Bash
bash 補完がインストールされていることを確認します。
Linux
-
利用している Linux OSであれば(最小インストールではない)、bash 補完が利用できるはずです。
-
補完スクリプトを
/etc/bash_completion.d/
に置きます。
$ sudo curl \
-L https://raw.githubusercontent.com/docker/compose/v2.4.1/contrib/completion/bash/docker-compose \
-o /etc/bash_completion.d/docker-compose
- ターミナルを一新します。
具体的にはいったん閉じてから新たなターミナルを起動するか、あるいは現在のターミナルにおいて
source ~/.bashrc
コマンドを実行して設定をリロードします。
Mac
Homebrew によるインストール
brew install bash-completion
によりインストールします。-
インストール後に Brew がインストール先のパスを表示します。 補完スクリプトをそのパスに置きます。
補完スクリプトはたとえば
/usr/local/etc/bash_completion.d/
に置きます。$ sudo curl \ -L https://raw.githubusercontent.com/docker/compose/v2.4.1/contrib/completion/bash/docker-compose \ -o /usr/local/etc/bash_completion.d/docker-compose
-
以下を
~/.bash_profile
に追加します。if [ -f $(brew --prefix)/etc/bash_completion ]; then . $(brew --prefix)/etc/bash_completion fi
- 補完を利用するため
~/.bash_profile
を source で取り込むか、あるいは新たな端末画面を起動します。
MacPorts によるインストール
-
sudo port install bash-completion
を実行して bash 補完をインストールします。 -
以下を
~/.bash_profile
に追加します。if [ -f /opt/local/etc/profile.d/bash_completion.sh ]; then . /opt/local/etc/profile.d/bash_completion.sh fi
-
補完を利用するため
~/.bash_profile
を source で取り込むか、あるいは新たな端末画面を起動します。
Zsh
oh-my-zsh
がインストールされているかどうかを確認します。
oh-my-zsh シェルがある場合
~/.zshrc
内のプラグインリストにdocker
とdocker-compose
を加えます。
これにより oh-my-zsh シェル内での自動補完機能を有効にします。
以下の例において...
の部分は、以前からインストールされている Zsh プラグインを表わします。
その後にsource ~/.zshrc
を実行して、変更を有効にします。
うまく設定できているかどうかは、docker ps
と入力してから、タブ キーを入力します。
plugins=(... docker docker-compose)
oh-my-zsh シェルがない場合
/path/to/zsh/completion
(通常は~/.zsh/completion/
)に補完スクリプトを置きます。
$ mkdir -p ~/.zsh/completion
$ curl \
-L https://raw.githubusercontent.com/docker/compose/v2.4.1/contrib/completion/zsh/_docker-compose \
-o ~/.zsh/completion/_docker-compose
-
~/.zshrc
内にて$fpath
にディレクトリを追加します。fpath=(~/.zsh/completion $fpath)
-
compinit
がロードされているか、あるいは~/.zshrc
内への追加によりそれが行われるかを確認します。autoload -Uz compinit && compinit -i
-
その後にシェルをリロードします。
$ exec $SHELL -l
利用できる補完機能
コマンドラインにどこまで入力しているかによって、補完される内容はさまざまです。
- 利用可能な docker-compose コマンド。
- 特定のコマンドにて利用可能なオプション。
- 指定されているコンテキストにおいて用いられるサービス名。
たとえば実行中サービス、停止中のインスタンス、イメージに基づくサービス、Dockerfile に基づくサービスなどです。
docker-compose scale
では、サービス名が補完されると自動的に「=」が追加されます。 - 指定されたオプションへの引数。
たとえば
docker-compose kill -s
に対して、シグナル名、たとえば SIGHUP や SIGUSR1 が補完されます。
Compose での作業を、入力は速くミスは少なく!