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": ""
}
]
なぜ 'source'と' destination'がオフになっていると思いますか?最初のものはホストディレクトリをマウントし、2番目のものはホストディレクトリをマウントしません。だから私にはうまく見える。 'docker-compose run web sh'を実行し、あなたのコード' server.js'の変更がコンテナファイルシステムに反映されているかどうか確認できますか?そのはず。 – tayfun
/usr/src/app内のファイルの変更を見ることができますが、ブラウザの更新時に反映されない理由はわかりません。 +1 – Jwqq
あなたのマウントが正しく動作していることを意味します。 'npm start'で実行されるノードアプリケーションは、コードの変更時に再ロードされません。どのようにすればいいのか分かりません。おそらくnpmのサーバー設定は自動的にコードが変更されてリロードされます。 @ tayfun私は参照してください – tayfun