2016-08-19 6 views
0

ドッカーを学んでいて、Nodejsを使って開発環境のボリュームにいくつか問題があります。nodejsとボリュームを使ったDocker Runningテスト

私はnodejs親画像からの私のユニットテストを開始することを目指し、以下の簡単なdockerfile持つ

:私は私のコンテナこの方法で実行メートル

FROM node:4-onbuild 

VOLUME ["/usr/src/app"] 

CMD [ "npm", "test" ] 

docker run -v /C/Users/myUser/dockertest:/usr/src/app notest 

をしかし、私はいつもm個次のエラー:

npm info it worked if it ends with ok 
npm info using [email protected] 
npm info using [email protected] 
npm ERR! Linux 4.4.15-moby 
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "test" 
npm ERR! node v4.5.0 
npm ERR! npm v2.15.9 
npm ERR! path /usr/src/app/package.json 
npm ERR! code ENOENT 
npm ERR! errno -2 
npm ERR! syscall open 

npm ERR! enoent ENOENT: no such file or directory, open '/usr/src/app/package.json' 
npm ERR! enoent This is most likely not a problem with npm itself 
npm ERR! enoent and is related to npm not being able to find a file. 
npm ERR! enoent 

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

私はなぜ私が見つけることができないのですか?私のコンテナの中にある/ usr/src/appフォルダ内のpackage.json。

事実が、私は、次のドッキングウィンドウのファイル使用してmの場合ということです:

FROM node:4-onbuild 

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

CMD [ "npm", "test" ] 

を私のテストは、コンテナ内で実行されますが、唯一のステップを構築した後、(私は、私は変更を行うたびに構築する必要が...)。私は、ドッキングウィンドウのコマンドを起動して(?幹部を再起動?)、これらのテストに私が好きな時間を再生する必要があなたの助け

+1

私はボリュームがコンテナの開始時にリンクしていると思う。つまり、あなたのWORKDIRは実際には、イメージの作成時に作成されたため、空のリンクボリュームではありません。 –

+0

最初の場合でも?最初のドッカーファイルを動作させるにはどうすればよいですか? – mfrachet

+0

リンク元ではなくコピーを使用してソースコードを挿入してください。 –

答えて

0

ための迅速

ありがとうございますが、すべてが関連する構築し、containerstartであなたのコードベースをリンクコピーしたいです。

その後、
FROM node:4.4 

# Enviroment variables 
ENV HOMEDIR /data 
RUN mkdir -p ${HOMEDIR} 
WORKDIR ${HOMEDIR} 

# install all dependencies 
COPY package.json ./ 
RUN npm install 

# add node content initially 
COPY . . 

CMD ["npm", "test"] 

そして、起動時にそれをリンク:

version: '2' 
services: 
    myApp: 
    build: 
     context: . 
     dockerfile: Dockerfile 
    image: "myApp" 
    volumes: 
     - .:/data 

今、あなたのコンテナを再構築/再起動せずに、あなたのコードベースを変更することができるはずです。

+0

おそらく何かが見つからないでしょう。私はいつもコンテナを取り除き、再構築して実行する必要があります(時間と複数のコマンドラインを取る)。私が探しているものではない – mfrachet

関連する問題