3
3

More than 5 years have passed since last update.

docker-composeコマンドが長いので短く打てるようにした

Posted at

docker-composeコマンドが長い

開発中、docker-composeでコンテナの立ち上げとか終了とかをやっているとこんな感じになることが多い。

# 終了して削除したい
docker-compose stop hoge && docker-compose rm -f hoge

# 終了して削除してビルドしてupしたい
docker-compose stop hoge && docker-compose rm -f hoge && docker-compose build hoge && docker-compose up -d hoge

# 終了して削除してビルドしてupしてログを見たい
docker-compose stop hoge && docker-compose rm -f hoge && docker-compose build hoge && docker-compose up -d hoge && docker-compose logs -f hoge

毎回毎回docker-composeとコンテナ名を打ち直すのは面倒だ。
そこで、aliasで短く打てるように~/.zshrcへこのように書いた。(bashの場合はbash_profile)

~/.zshrc
alias dcps="docker-compose ps"
alias dcbd="docker-compose build"
alias dcup="docker-compose up -d"
alias dcst="docker-compose stop"
alias dcrm="docker-compose rm -f"
alias dclog="docker-compose logs -f"

function dcstrm() {
  dcst $1 && dcrm $1
}

function dcrl() {
  dcstrm $1 && dcbd $1 && dcup $1
}

function dcrlog() {
  dcrl $1 && dclog $1
}

大分短かくなった

# 終了して削除したい
dcstrm hoge

# 終了して削除してビルドしてupしたい
dcrl hoge

# 終了して削除してビルドしてupしてログを見たい
dcrlog hoge

なんて便利なんだろう。もっと早くやっておけばよかった……。

aliasはシェルスクリプトとは書き方が違う

最初、シェルスクリプトと同じつもりで次のようなaliasを書いたところ、dcstrmから先がうまく動作しなかった。
$1がうまくパラメータとして渡らず、全てのコンテナが操作の対象となってしまうのだ。

alias dcps="docker-compose ps"
alias dcbd="docker-compose build $1"
alias dcup="docker-compose up -d $1"
alias dcst="docker-compose stop $1"
alias dcrm="docker-compose rm -f $1"
alias dclog="docker-compose logs -f $1"

# ここから先がうまく動かない!
alias dcstrm="dcst $1 && dcrm $1"
alias dcrl="dcstrm $1 && dcdb $1 && dcup &1"
alias dcrlog="dcrl $1 && dclog $1"

ググってみると、aliasはシェルスクリプトと一緒ではなく、$#のようなものは使えないことが分かった。
引数を使いたいときはfunctionを定義するとのこと。

To quote the bash man page:

There is no mechanism for using arguments in the replacement text. If arguments are needed, a shell function should be used (see FUNCTIONS below).

So it looks like you've answered your own question -- use a function instead of an alias

How to pass command line arguments to a shell alias? - Stack Overflow

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3