質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

1回答

2712閲覧

Docker + Express環境でNodemonが機能しない

yusuke.y

総合スコア17

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/05/12 15:15

編集2021/05/12 15:16

Dockerで環境構築したExpressにNodemonをインストールしてみました。

terminal

1docker-compose up --build

で立ち上げ後にファイルを編集してもNodemonが機能せず、即時反映されません。
どうしたら機能しますか?

ディレクトリ構造

my-app |-docker-compose.debug.yml |-docker-compose.yml |-app |-bin |-node_modules |-public |-routes |-views |-app.js |-Dockerfile |-package-lock.json |-package.json

docker-compose.yml

yml

1version: '3.4' 2 3services: 4 app: 5 image: dockerexpress 6 build: 7 context: app 8 dockerfile: ./Dockerfile 9 ports: 10 - 3000:3000 11

Dockerfile

FROM node:12.18-alpine WORKDIR /usr/src/app COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"] RUN npm install COPY . . EXPOSE 3000 CMD ["npm", "start"]

package.json

{ "name": "app", "version": "0.0.0", "private": true, "scripts": { "start": "nodemon ./bin/www" }, "dependencies": { "cookie-parser": "~1.4.4", "debug": "~2.6.9", "ejs": "~2.6.1", "express": "~4.16.1", "express-session": "^1.17.1", "http-errors": "~1.6.3", "morgan": "~1.9.1", "nodemon": "^2.0.7", "oauth": "^0.9.15", "passport": "^0.4.1", "passport-twitter": "^1.0.4", "twitter": "^1.7.1" } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yusuke.y

2021/05/12 23:00

package.jsonのscriptsを以下のように変更しましたが、機能していませんでした。 "start": "nodemon --legacy-watch ./app ./bin/www"
guest

回答1

0

質問文とソースを読む限り、編集をしているのはローカルファイルだと思いますが、
nodemonなどで変更を検知できるのは、Dockerコンテナが認識できるファイルシステムのみだと思います。

現状の環境でDockerコンテナの領域の外でファイルを編集しても、Dockerコンテナが認識できません。
docker-compose.ymlでボリュームについての設定を行って、
コンテナにローカルマシンの領域をマウントして認識できるようにしてあげる必要があります。

diff

1version: '3.4' 2 3services: 4 app: 5 image: dockerexpress 6 build: 7 context: app 8 dockerfile: ./Dockerfile 9 ports: 10 - 3000:3000 11+ volumes: 12+ - ./app:/app

./app:/appの後半は正しい情報を思い出せないので、Dockerコンテナ側でDcokerfileappフォルダを確認してしていしてあげ

投稿2021/05/14 15:43

attakei

総合スコア2740

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問