Imを使用しようとしています複数のサービス(redis、mongo、およびexpressのアプリケーション)を実行するためのドッカーの作成。ホストにコンテナを「接続」させたいので、ファイルを変更するとコンテナ内のファイルも変更されます。Docker - ボリューム共有ホストの問題:コンテナ
expressアプリのDockerファイルはnpm install
です。私はdocker-compose up
をしようとすると
、Imは、次のエラーを取得:
web_1 | [nodemon] 1.9.2
web_1 | [nodemon] to restart at any time, enter `rs`
web_1 | [nodemon] watching: *.*
web_1 | [nodemon] starting `node server/app.js`
web_1 | module.js:328
web_1 | throw err;
web_1 | ^
web_1 |
web_1 | Error: Cannot find module 'express'
web_1 | at Function.Module._resolveFilename (module.js:326:15)
web_1 | at Function.Module._load (module.js:277:25)
web_1 | at Module.require (module.js:354:17)
web_1 | at require (internal/module.js:12:17)
web_1 | at Object.<anonymous> (/blog/server/app.js:5:15)
web_1 | at Module._compile (module.js:410:26)
web_1 | at Object.Module._extensions..js (module.js:417:10)
web_1 | at Module.load (module.js:344:32)
web_1 | at Function.Module._load (module.js:301:12)
web_1 | at Function.Module.runMain (module.js:442:10)
web_1 | [nodemon] app crashed - waiting for file changes before starting...
それは急行モジュールを見つけることができないと文句を言い。コンテナ内
docker run -it --rm --entrypoint /bin/bash image_name
、node_modules
フォルダがを存在:package.jsonに指定された依存関係は、Imは/ binに/ bashのエントリポイントとコンテナを実行し、正しくビルドプロセスがインストールされていることを確認するには
。私もnodemon server/app
を実行して、アプリケーションを正しく実行することができます(もちろん、他のサービスからの接続はありません)。
ここでは、特急のアプリのために `Dockerfile'です:それはボリュームに関連したものになるだろう
version: '2'
services:
db:
image: mongo
ports:
- "27017:27017"
cache:
image: redis
ports:
- "6379:6379"
web:
environment:
NODE_ENV: 'development'
build: .
command: nodemon server/app.js
volumes:
- ./:/blog
ports:
- "8000:8000"
depends_on:
- cache
- db
:
FROM node:argon
MAINTAINER xxxxxxxx
# Install globally nodemon
RUN npm install nodemon -g
# Make folder that contains blog
RUN mkdir -p blog
# Set up working directory (from now on we are located inside /blog)
WORKDIR /blog
# Add package
ADD ./package.json /blog
# Install dependencies defined in packaje.json
RUN npm install
# Copy data
ADD ./ /blog
そして、ここdocker-compose.yml
?。
私のローカル環境では、node_modulesフォルダはありません。 docker-compose.ymlで定義したvolumes
タグはnode_modules folder
を隠して、docker-compose built
で構築されていますか?
ADD ./ /blog
これはあなたのローカルディレクトリを取って、ブログ/で画像を追加し、オユは、あなたのNPMのパッケージをインストールしているが、私は同じ/ブログに仮定をしているあなたのDockerfileで