素のdockerで試してみる。
落ちるケース。第一引数に hostname && hostname
が渡され、それ全体がコマンドと評価されている?
$ docker run busybox 'hostname && hostname'
docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"hostname && hostname\": executable file not found in $PATH": unknown.
ERRO[0001] error waiting for container: context canceled
成功してるかと思いきや、実はdocker コマンド自体が終了しており、実行元で2個目のコマンドが実行されてしまっているケース。
$ docker run busybox hostname && hostname
b7cebfb9e802
YumaInauranoMacBook-Air.local
bash / sh に全部渡せして 1コマンド扱いにすれば成功するっぽい。
$ docker run busybox sh -c 'hostname && hostname'
957b50b9e107
957b50b9e107
docker-compose
同じく全体を bash コマンドでくくるなどして1コマンド扱いにする必要があるっぽい。
command: bash -c 'echo "ok" && echo "ok" && echo "ok"'
こういうのはダメ。
command: echo "ok" && echo "ok"
command: bash -c echo "ok" && bash -c 'echo "ok" && echo "ok"'
yaml - Using Docker-Compose, how to execute multiple commands - Stack Overflow
sh とか ash しか入ってない場合はそちらで多分。
Original by Github issue
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。