🐳

docker-compose で exit with status 0 の解決法

2021/10/14に公開

解決法 1

調べた限り、一番の王道ぽい。
docker-compose.yml に以下を追記する。

tty: true

ただ自分の場合、変わらずexit with status 0になってしまった。
tty: trueはコンテナを起動し続けるオプションとのこと。

解決法 2

こちらも王道
docker-compose.yml に以下を追記する。

stdin_open: true

こちらは上手くいった。
しかし、起動時にシェルスクリプトを走らせるとexit with status 0に戻ってしまった。

ちなみにstdin_open: true は 標準入出力とエラー出力をコンテナに結びつける役割らしい。
docker run -it コンテナの名前 の -i

解決法 3

docker-compose.yml に以下を追記する。

command: tail -f /dev/null

こちらも上手くいった。
つまり、なにかコンテナ内でコマンドが走り続けていればいい
docker-compose upを走らせるとAttaching to コンテナの名前となって起動状態が維持された。

まとめ

情報がバラけていたので、まとめてみました。
docker-composeコマンドがdockerコマンドのオプションになると聞いたんですが、どうなんですかね?

環境

  • MacBook Air (M1, 2020)
  • Docker version 20.10.8, build 3967b7d
  • docker-compose version 1.29.2, build 5becea4c

Discussion