動かざることバグの如し

殿、温めておいたバグがこちらでございます

docker-composeでアスタリスク(*)を含むコマンドを実行したい

なんでできへんのや

環境

$docker -v
Docker version 18.06.1-ce, build e68fc7a

$docker-compose -v
docker-compose version 1.22.0, build f46880f

やりたいこと

docker-composeが起動している上で以下のようにするとdocker内でコマンドを実行できる。

docker-compose exec サービス名 コマンド

でそのコマンドの中で*(アスタリスク)を使うことって多いと思うんだよね。ワイルドカードみたいに

しかし実行すると予想通りの結果にならない。

$ docker-compose exec php-fpm ls /tmp/*.json
ls: cannot access '/tmp/*.json': No such file or directory

確実にjsonファイルが有るはずなのに表示できない。。。

原因

docker-composeで実行されるのはシェルではなくコマンド?

ワイルドカード*の機能はシェル/bin/shの機能なので使えない」ってこと

解決

shするしかない

docker-compose exec php-fpm sh -c 'tail -f /tmp/*.json'

でいけた