2016-10-10 11 views
1

のオーバーライド内容:ドッカー - シンプルなNode.jsのドッキングウィンドウコンテナ</p> <p>ドッカ-compose.ymlを持つリンクボリューム

app: 
    build: ./dockerfiles/app 
    volumes: 
    - /Users/home/work/app:/usr/app 

Dockerfile:

FROM node:6.7-slim 

COPY package.json /tmp 
RUN cd /tmp && npm install 

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

CMD ["node", "./src/app.js"] 

私が達成したい何がコンテナであります私はpackage.jsonを持っていて、ノードモジュールをインストールしました(npm install)。私がpackage.jsonをコピーしてコンテナの中にモジュールをインストールする部分は非常に複雑ですが、リンクされたアプリケーションの中でこれらのnode_moduleを使いたいときに問題が発生します。私は/ usr/app/node_modulesに/ tmp/node_modulesをコピーする方法は見つけられません

ドッカーの方法はありますか?そうでない場合は、ノード・アプリケーションに、ルート・ディレクトリ以外のnode_modulesを探すように指示できますか?

+0

https://docs.docker.com/engine/tutorials/dockervolumes/または「docker cp」https://docker.github.io/engine/reference/commandline/cp/またはDockerfileのCOPYボリュームを使用してください私が誤解している場合には、 – user2915097

+0

/usr/appはボリューム経由でリンクされていますが、コンテナを起動すると起きています。/tmp/node_modulesの内容で/ usr/app/node_modulesを上書きするにはドッカーが必要です – Schovi

+0

@ nwinklerの答えは、あなたのコンテナに常に更新されたものがあるのなら、なぜnode_modulesをマウントしているのか理解しようとしていますか?他の容器もそれを使用していますか? – Griffin

答えて

0

事はDockerfileに続いてボリューム

volumes: 
    - ${APP_PATH}:/usr/app 
    # Empty node_modules directory 
    - /usr/app/node_modules 

の使用方法を以下の通りです:

FROM node 

# Node modules 
COPY *.json /tmp/ 
RUN cd /tmp && yarn 
ENV NODE_PATH /tmp/node_modules:${NODE_PATH} 

# App 
RUN mkdir -p /usr/app 
WORKDIR /usr/app 
ENV NODE_ENV docker 

CMD ["run-node", "src/app.js"] 

は、これは私が彼らのためになります別のディレクトリやアプリでnode_modulesを持つことができます。

1

Dockerfileまたはdocker-compose.ymlファイルのいずれかで、コンテナの起動時に使用されるCMDを変更することで、必要なものを実現できます。 node_modulesオーバー

  1. コピー:代わりにちょうどnode ./src/app.jsを開始

    は、次の2つのことをやりたいです。

  2. docker-compose.ymlを使用して
  3. 開始ノード

、私は次の操作を行います:

app: 
    build: ./dockerfiles/app 
    volumes: 
    - /Users/home/work/app:/usr/app 
command: > 
    bash -c " 

    rm -rf /usr/app/node_modules 
    && cp -R /tmp/node_modules /usr/app/node_modules 
    && node ./src/app.js 
    " 

これは、コンテナからのものにコピーし、マッピングされた-でボリューム上の既存のノードモジュールを削除します、最後にノードアプリを起動します。これは、コンテナが開始されるたびに発生します。私を助けてくれ

関連する問題