2017-03-22 16 views
1

私は、次のdockerでホストコードをコンテナにマウントする方法は?

Dockerfile 
docker-compose.yml 
package.json 
server.js 

マイドッキングウィンドウのファイルのような非常に簡単なコードベースを持っている

FROM node:alpine 

RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 

COPY package.json /usr/src/app 
RUN npm install 

COPY . /usr/src/app 

EXPOSE 3000 
CMD ["npm", "start"] 

マイドッキングウィンドウのコンファイル

version: "3" 
services: 
    web: 
    build: . 
    volumes: 
     - .:/usr/src/app 
     - /usr/src/app/node_modules 
    ports: 
     - "3000:3000" 
    depends_on: 
     - postgres 
    postgres: 
    image: postgres:9.6-alpine 
    ports: 
     - 5432:5432 

私が構築し、成功しdocker-compose upを行うが、私は持つことができます私のserver.jsを編集してブラウザをリフレッシュすると、ソースコードがコンテナにマウントされても問題ありません。

どの部分が欠落しているかわかりません。誰かがそれについて私を助けてくれますか?どうもありがとう!

更新: 私がコンテナを検査するとき、ここにマウント情報があります。

"Mounts": [ 
      { 
       "Type": "bind", 
       "Source": "/Users/JJ/myApp", 
       "Destination": "/usr/src/app", 
       "Mode": "rw", 
       "RW": true, 
       "Propagation": "" 
      }, 
      { 
       "Type": "volume", 
       "Name": "12e5a018e711511bfe14a8ea97465d7966696dc62a57727eeafd0de2b4a1e915", 
       "Source": "/var/lib/docker/volumes/12e5a018e711511bfe14a8ea97465d7966696dc62a57727eeafd0de2b4a1e915/_data", 
       "Destination": "/usr/src/app/node_modules", 
       "Driver": "local", 
       "Mode": "", 
       "RW": true, 
       "Propagation": "" 
      } 
     ] 
+1

なぜ 'source'と' destination'がオフになっていると思いますか?最初のものはホストディレクトリをマウントし、2番目のものはホストディレクトリをマウントしません。だから私にはうまく見える。 'docker-compose run web sh'を実行し、あなたのコード' server.js'の変更がコンテナファイルシステムに反映されているかどうか確認できますか?そのはず。 – tayfun

+0

/usr/src/app内のファイルの変更を見ることができますが、ブラウザの更新時に反映されない理由はわかりません。 +1 – Jwqq

+1

あなたのマウントが正しく動作していることを意味します。 'npm start'で実行されるノードアプリケーションは、コードの変更時に再ロードされません。どのようにすればいいのか分かりません。おそらくnpmのサーバー設定は自動的にコードが変更されてリロードされます。 @ tayfun私は参照してください – tayfun

答えて

2

コードを変更すると自動的にリロードされません。そのためにはプロセスを再起動する必要があります。

開発環境でNodemonを使用することをお勧めします。 https://nodemon.io/

nodemonを本番環境に配備しないでください。それは意味がありません。それは開発ツールです。

関連する問題