うちのいぬ Tech Blog

Tech Blog of Uchinoinu/My dog

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の説明はこちらが詳しいです

でも 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