LoginSignup
0
0
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

Docker コンテナ内でアプリケーションを終了させたい!!!

Last updated at Posted at 2024-06-29

この記事が役立つかもしれない人

  • npm run dev などでコンテナ起動時に実行するよう設定しているアプリケーションを停止させたい人
  • 特定のポートで動作しているプロセスを停止したい人
  • アプリケーションをビルドしてみて手元で正常に実行できるか試したい人

背景

npm run devnpm run start などをコンテナ起動時に叩くように設定していると便利ですよね。

ただ一方でデプロイが上手くいかないときにビルドしたアプリケーションが正常に動作しているのかを確認したくなることがあります。

そこで困りがちな問題が「Ctrl + C で停止できない!」「どうやって停止するの!?」などです。これを解決する方法について解説します。

方法

ポートを使用しているプロセスを確認して、そいつを停止させます。

手順

1. ポートを使用しているプロセスを確認する

例 (:8080 は対応するポート番号に書き換える)
$ lsof -i :8080
lsof: not found と言われる!

コマンドがインストールされておらず使えない状態です。
数秒で終わるのでインストールしましょう!

$ apt-get update
$ apt-get install lsof

:8080 は Docker Compose で設定している ports を確認して対応しているポート番号に書き換えてください。

例として下記のように Docker Compose が設定がされている場合は lsof -i :8081 という風になります。

compose.yml
nestjs-app:
  build:
    context: "./nestjs-app"
  init: true
  ports:
    - "8082:8081"
  volumes:
    - type: bind
      source: ./nestjs-app
      target: /nestjs-app
  working_dir: /nestjs-app
  command: sh -c "npm install && npm run start:dev"

2. プロセスを停止する

lsof を実行すると次のような出力があるはずです。

COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
node    208 root   26u  IPv6 509013      0t0  TCP *:8080 (LISTEN)

PID がプロセスの ID なので、それを使ってプロセスを停止 (kill) します。

$ kill -9 {PID}

コマンドの解説

lsof とは?

オープンファイルを一覧表示するコマンドです。
-i オプションを使用することでネットワークソケットを対象にすることができます。
つまり lsof -i :8080 を実行すると、ポート 8080 で動作しているプロセスの情報が表示されます

kill とは?

実行中のプロセスを終了させるコマンドです。
-9 オプションは、プロセスに強制終了のシグナル (SIGKILL) を送信します。通常の kill コマンド (SIGTERM) では終了しないプロセスを停止する際に有効です。
ただし注意点として強制終了によるデータ損失や状態の不整合が発生する可能性もあるため、通常の環境では慎重に使用することをお勧めします。今回のような Docker コンテナ内であれば基本的には問題ありません。

まとめ

これで port を占領しているアプリケーションを停止することができました。

あとは node dist/main など、ビルドしたアプリケーションの動作を確認するだけです!


この記事が役に立ったら 🩷 を頂けると嬉しいです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0