コマンドライン補完

Compose には bash 用あるいは zsh 用の コマンド補完(command completion)が用意されています。

コマンド補完のインストール

Bash

bash 補完がインストールされていることを確認します。

Linux

  1. 利用している Linux OSであれば(最小インストールではない)、bash 補完が利用できるはずです。

  2. 補完スクリプトを/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
  1. ターミナルを一新します。 具体的にはいったん閉じてから新たなターミナルを起動するか、あるいは現在のターミナルにおいてsource ~/.bashrcコマンドを実行して設定をリロードします。

Mac

Homebrew によるインストール
  1. brew install bash-completionによりインストールします。
  2. インストール後に 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
    
  3. 以下を~/.bash_profileに追加します。

    if [ -f $(brew --prefix)/etc/bash_completion ]; then
        . $(brew --prefix)/etc/bash_completion
    fi
    
  4. 補完を利用するため~/.bash_profileを source で取り込むか、あるいは新たな端末画面を起動します。
MacPorts によるインストール
  1. sudo port install bash-completionを実行して bash 補完をインストールします。

  2. 以下を~/.bash_profileに追加します。

    if [ -f /opt/local/etc/profile.d/bash_completion.sh ]; then
        . /opt/local/etc/profile.d/bash_completion.sh
    fi
    
  3. 補完を利用するため~/.bash_profileを source で取り込むか、あるいは新たな端末画面を起動します。

Zsh

oh-my-zsh がインストールされているかどうかを確認します。

oh-my-zsh シェルがある場合

~/.zshrc内のプラグインリストにdockerdocker-composeを加えます。 これにより oh-my-zsh シェル内での自動補完機能を有効にします。 以下の例において...の部分は、以前からインストールされている Zsh プラグインを表わします。 その後にsource ~/.zshrcを実行して、変更を有効にします。 うまく設定できているかどうかは、docker psと入力してから、タブ キーを入力します。

plugins=(... docker docker-compose)

oh-my-zsh シェルがない場合

  1. /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
  1. ~/.zshrc内にて$fpathにディレクトリを追加します。

    fpath=(~/.zsh/completion $fpath)
    
  2. compinitがロードされているか、あるいは~/.zshrc内への追加によりそれが行われるかを確認します。

    autoload -Uz compinit && compinit -i
    
  3. その後にシェルをリロードします。

    $ exec $SHELL -l
    

利用できる補完機能

コマンドラインにどこまで入力しているかによって、補完される内容はさまざまです。

  • 利用可能な docker-compose コマンド。
  • 特定のコマンドにて利用可能なオプション。
  • 指定されているコンテキストにおいて用いられるサービス名。 たとえば実行中サービス、停止中のインスタンス、イメージに基づくサービス、Dockerfile に基づくサービスなどです。 docker-compose scaleでは、サービス名が補完されると自動的に「=」が追加されます。
  • 指定されたオプションへの引数。 たとえばdocker-compose kill -sに対して、シグナル名、たとえば SIGHUP や SIGUSR1 が補完されます。

Compose での作業を、入力は速くミスは少なく!

Compose ドキュメント

fig, composition, compose, docker, orchestration, cli, reference