2016-08-14 6 views
1

ドッキング・ツールは、ノード・コンテナのみを使用して、別のコンテナを学習したり使用したりして使用しようとしています。 私はノードのDockerfileを持っていて、ノードフォルダを共有しています。ここでドッキング・ボリュームが機能しない

は私の構造体である:

- front-end folder 
    * docker-compose.yml 
    - node folder 
    * package.json 
    * Dockerfile.json 
    * server.js 

私Dockerfileはdockerhubからのノードである:

FROM buildpack-deps:jessie 

# gpg keys listed at https://github.com/nodejs/node 
RUN set -ex \ 
    && for key in \ 
    9554F04D7259F04124DE6B476D5A82AC7E37093B \ 
    94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \ 
    0034A06D9D9B0064CE8ADF6BF1747F4AD2306D93 \ 
    FD3A5288F042B6850C66B31F09FE44734EB7990E \ 
    71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \ 
    DD8F2338BAE7501E3DD5AC78C273792F7D83545D \ 
    B9AE9905FFD7803F25714661B63B535A4C206CA9 \ 
    C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \ 
    ; do \ 
    gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \ 
    done 

ENV NODE_VERSION 0.12.15 

RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \ 
    && curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ 
    && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ 
    && grep " node-v$NODE_VERSION-linux-x64.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ 
    && tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components=1 \ 
    && rm "node-v$NODE_VERSION-linux-x64.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt 

CMD [ "node" ] 

そして、私のドッキングウィンドウ-compose.ymlは次のとおりです。

version: '2' 
services: 
    node: 
    build: ./node 
    ports: 
     - '8080:8080' 
    volumes: 
     - ./node:/usr/local/src/node 

私ができますよコマンドdocker-compose run node npm install any_packageを実行しますが、コマンドdocker-compose run node npm installを実行すると、このエラーが表示されます。

npm ERR! install Couldn't read dependencies 
npm ERR! Linux 4.4.12-boot2docker 
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "i" 
npm ERR! node v0.12.15 
npm ERR! npm v2.15.1 
npm ERR! path /package.json 
npm ERR! code ENOPACKAGEJSON 
npm ERR! errno -2 

npm ERR! package.json ENOENT, open '/package.json' 
npm ERR! package.json This is most likely not a problem with npm itself. 
npm ERR! package.json npm can't find a package.json file in your current directory. 

npm ERR! Please include the following file with any support request: 
npm ERR!  /npm-debug.log 

とするとき、私はdocker-compose run node npm install any_packageを実行して、フォルダnode_modulesは私のノード]フォルダに表示されなければなりません。そうですか?

答えて

0

Dockerファイルが表示されていないと、アプリが/ usr/local/src/nodeに向いているとはっきりしません。したがって、あなたのコマンドは別の場所にあるファイルを探している可能性があります。

あなたのDockerファイルがポイントノードを/ usr/local/bin/nodeと仮定すると、あなたの問題はホストボリュームと思われます。ホストボリュームでは、私が見た2つの最も一般的なエラーは、異なるuidのアクセス権とDockerホストVM内から開発者マシンのフォルダをマウントしようとするアクセス権です。 Boot2dockerは、私があなたが後者を体験していると思うように導きます。

docker-compose run node ls -l /usr/local/bin/node 

空のディレクトリが表示されている場合は、Windows/MacOSではなくVMのフォルダがマウントされています。 c:/ Users(Windows)または/ Users(MacOS)のフォルダを使用して、VMにマップされた共有を取得します。

権限が異なるファイルが表示されている場合は、Dockerホスト(chmod 777ファイル)の権限を開くか、ホスト内のuidとgidをミラーリングして回避することができますDockerファイルにアプリケーションをインストールする前に実行してください)。あなたのpackage.json

+0

Dockerファイルを追加します –

+0

/usr/local/bin/nodeにworkdirを追加する必要がありますか? –

+0

そのDockerfileでは、すべてのファイルを探しています。あなたのDockerファイルで 'WORKDIR/usr/local/bin/node'を使うか、' working_dir:/ usr/local/bin/node'を使ってこのエラーを回避してください。 – BMitch

0

は(/から実行される)/usr/local/src/nodenodeが、それは/であることを期待しています。

関連する問題