2017-12-22 21 views
1

Dockerfileメイク

FROM node:carbon 

WORKDIR /usr/src/app 

COPY package*.json ./ 
RUN npm install 
RUN npm install gulp -g 

COPY . . 

run gulp build --build 
run npm test 

EXPOSE 80 
CMD [ "npm", "start" ] 
私は1つのモカテストが npm testは、このように、必要があります失敗したことを検出するにはどうすればよい mocha --recursive

build.sh

docker build -t my-app . 
echo $? 

を使用して走っている

テストいいえ、どちらもdocker buildですか?

私はここで何か不足しているかもしれません。

答えて

1

RUN Dockerfile内のコマンドの終了コードが0でないと失敗します。その場合、docker buildもゼロ以外の終了コードで失敗します。

npm testスクリプトでは、テストが失敗したときにゼロ以外の終了コードを返す必要があります。

は参考のために、あなたは次のように終了コードを確認することができます:あなたは

run npm test || exit 1は簡単なテストを実行し、ビルドが失敗している確認ラインrun npm testに変更されることがあり

$ npm test 
$ echo $? 
+1

障害があっても問題は0で終了していました。 –

0

ドッカーとノードアプリケーションのベストプラクティスに従うことをお勧めします。 npmをインストールしたコンテナ内にアプリを構築して内部でテストを実行するべきではありません。ビルドおよびテストのライフサイクルは、CI/CDサーバー(TravisCI https://travis-ci.org/またはCircleCI https://circleci.comなど)で実行できます。どちらもパブリックGitHubリポジトリでは無料です。 CIパイプラインでは、失敗したビルド/テストを検出することができ、エラー後にイメージを構築しないように、CIをより簡単に設定できます。あなたのバンドルされたアプリケーションは、CIサーバーからドッカーコンテナ内にコピーされ、その後、コンテナ内でアプリケーションを起動する必要があります。

+0

はい、しかし、私の場合は、ノード環境は容器のみで、コンピュータ上にありません。 –

0

。ここにスクリーンショットがあります。

enter image description here

+0

これはシェルスクリプトであれば動作しますが、これはDockerfileです。 'npm test'が失敗コードを返していればビルドは既に失敗しています。 – mkasberg