0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Docker】 nodemonを使ってjsファイルの変更を反映させる no.17

Posted at

パンプキン カフェ (7).png

こんにちは、まゆみです。

Dockerについての記事をシリーズで書いています。

前々回の記事から3記事連続で『-v』オプションについての記事を書いてきました。

-v でバインドマウントしたら、htmlファイルの変更がイメージをrebuildすることなしに反映されることは、こちらの記事に書かせていただきました。

ただ、jsファイルの変更は-vオプションで、バインドマウントしても即、反映されません。(nodeではなく、nodemonを使わない限り)

今回の記事では、nodemonを使ってContainer を実行するにはどのようにDockerfileを書かなければいけないのか、書いていきます

ではさっそく始めていきます。

#nodemonを使う

nodemon とはソースを監視して、自動でサーバーを再起動してくれるツールになります。

ソースコードに変更が加えられたら、nodemon自らがその変更に気づいてくれて再起動してくれるのです。

##package.jsonに書き加えること

では、nodemonをContainerで使うのに必要な事項をpackage.json に書き加えていきます

"devDependencies": {
    "nodemon": "2.0.4"
  }
"scripts": {
    "start": "nodemon server.js"
  },

これらのコードをpackage.jsonに書き加えると下記のようになります。

そして、package.jsonが変更された後saveしてください。

2021-06-22_9-46-11.png

#Dockerfileを書き換えるところ

では次にDockerfileを書き換えていきます

CMD ["npm","start"]

上記のコードが意味するのは、Containerを起動させるとき、package.json"の中の"scripts"にある"start"で指示しているファイルを使ってくれということになります

2021-06-22_10-10-16.png

#WSL2をWindowsで使っている方への注意点

WSL2を使っている方の場合、上記のようにDockerfileやpackage.jsonを書き換えても、jsファイルの変更が即反映されるようにはなりません。

 "scripts": {
    "start": "nodemon -L server.js"
  },

package.jsonを上記のように書き換えてください。

『-L』が必要になります。

#jsファイルの変更がrebuildしなくても反映される

2021-06-22_10-36-41.png

jsファイルにconsole.log()を書き加えて、その中のテキストを変更してみました。

docker logs <container ID>

を使うとコンテナからログを取得できます

2021-06-22_10-52-28.png

#まとめ

今回の記事はここらへんで締めくくらせていただきます。

お役に立てれば幸いです。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?