2016-08-23 9 views
0

私のWebアプリケーションはNode.jsとMongoDBを使用しています。私はからmongoイメージを引っ張っています。ノード・アプリケーションのイメージを構築すると、それだけでうまく動作します。しかし、コンポを使用してコンテナを起動すると、次のエラーが発生します。画像がDockerfileから構築されているときにパッケージをインストールするはずですか?ドッカーを使用してパッケージをインストールできない

web_1 | module.js:457 web_1 | throw err;

web_1 | ^

web_1 |

web_1 | Error: Cannot find module 'mongoose'

web_1 | at Function.Module._resolveFilename (module.js:455:15)

web_1 | at Function.Module._load (module.js:403:25)

web_1 | at Module.require (module.js:483:17)

web_1 | at require (internal/module.js:20:19)

web_1 | at Object. (/worklog/worklog.js:7:14)

web_1 | at Module._compile (module.js:556:32)

web_1 | at Object.Module._extensions..js (module.js:565:10)

web_1 | at Module.load (module.js:473:32)

web_1 | at tryModuleLoad (module.js:432:12)

web_1 | at Function.Module._load (module.js:424:3)

Dockerfile

FROM node 

RUN mkdir -p /worklog 

WORKDIR /worklog 

RUN npm install mongoose \ 
    express \ 
    body-parser \ 
    express-session \ 
    method-override \ 
    connect-mongo \ 
    mongodb 

COPY login.html worklog.html workloglist.html worklog.js /worklog/ 

ENV NODE_VERSION 6.3.1 

EXPOSE 4000 

CMD npm, start 

ドッキングウィンドウ-compose.yml

db: 
    image: mongo 
    ports: 
    - "27017:27017" 
    command: "--smallfiles --logpath=/dev/null" 
web: 
    build: . 
    command: node worklog.js 
    volumes: 
    - .:/worklog 
    ports: 
    - "4000:4000" 
    links: 
    - db 
    environment: 
    PORT: 4000 
+0

クリーンな環境から始めるには、 "ドッカーの作成rm web &&ドッカーの作成rm db &&ドッカーの作成ビルド&&ドッカーの作成"を試してください。あなたが "ドッカーps"の場合、db_1コンテナは動作していますか? – TopperH

+0

私は同じ結果をもう一度試しました。私は 'docker-compose up'コマンドやあなたのコマンドを使用するとアーカイブからパッケージを引き出しないことを知りました。はい、db_1が動作しています。 – emre01

+0

ビルドコマンドの前に "docker-compose pull"を追加してみてください。 – TopperH

答えて

3

volumes: 
    - .:/worklog 

は、基本的には、ビルドに/作業ログにインストールし、すべてをマスキングされたボリュームホースのファイルt、/ worklog/node_modules(存在する場合)を含みます。あなたは、私が再びアプリにnode_modulesを可視化ホストからマウントされたディレクトリの上にコンテナから/作業ログ/ node_modules重ねて考える

volumes: 
    - .:/worklog 
    - /worklog/node_modules 

を試みることができます。

+0

ありがとうございます。非常に明確な説明。 – emre01

関連する問題