docker-compose upをしてもプロセスが終了してしまうことへの対応
基本的には docker はフォアグラウンドでプロセスが走っていれば docker container のプロセスが終了することは無いと思っていたのですが、うまくいかないことがあったのでその対応を書き残しておきます。
tty: true にする
docker-compose.yml
version: '3' services: bot: image: watashino/image tty: true # make container stay launched volumes: - ../:/src build: context: .. dockerfile: ./docker/services/bot/Dockerfile
でも tty: true
を付けているのに、commandを実行するとコンテナが終わってしまう。
bashを対話モードで起動させておく
Dockerfile
CMD bash -c "npm start && /bin/bash"
これによって、プロセスが起動状態のままになりました。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3ae0sguc0f2c watashino/image "/bin/sh -c 'bash -c…" 28 minutes ago Up 28 minutes bot