2017-09-09 16 views
0

私はDockerでの開発目的でReactJSプロジェクトを作成しようとしています。このプロジェクトはチーム全体で共有されます。Docker - 開発環境用のnpmインストール

しかし、私はこれを容器に私はボリュームの共有にしたいので、私のappディレクトリをどのように機能するかを理解するトラブルを抱えているが、私がnpm installに容器にpackage.jsonをコピーし、それゆえnom run start

私を実行する必要がありそうですディレクトリ構造は次のとおりです。

app/ 
    src/ 
    public/ 
    node_modules/ 
    package.json 
docker/ 
    admin/ 
    dockerfile 
docker-compose.yml 

dockerfile

FROM node:7.8.0 

WORKDIR /app 
RUN npm install 

EXPOSE 3000 
CMD npm run start 

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

version: '3' 
services: 
    admin: 
    build: 
     context: ./docker/admin 
     dockerfile: dockerfile 
    image: project/admin 
    volumes: 
    - ./app:/app 
    ports: 
     - "3000:3000" 

だから、問題がある:docker-composeからボリュームの共有がまだ起きていないので、npm installが失敗し、dockerfileが実行されるとき、それは何のpackage.jsonはありません考えています。だから私はコンテナにpackage.jsonをコピーしなければならないように思えますが、それは変更を行う限り開発には理想的ではありません。

さらに、ドッカーファイルと同じディレクトリの中のCOPYファイルのみをコンテナに入れることができると思うので、ドッカーファイルをプロジェクトのルートに移動する必要があります。私はこのアイデアが大好きではありません。なぜなら、このプロジェクトには他のコンテナもあるでしょうし、ドッキングファイルも必要になるからです。

ノード開発をDockerから処理するための優れたソリューションはありますか?基本的に、私は、チームの他の開発者にとって可能な限りシンプルな「起動して実行する」プロセスを作りたいと考えています。開発中に

答えて

0

あなたが必要とする:

  • はあなたのNode.jsアプリケーションを再起動します場合は
  • デバッグ、コード
  • など

をテスト

  • 再放送をお使いのフロントエンド
  • を再構築あなたは開発中にDockerコンテナにファイルを置くことを試みますあなたは開発プロセスにオーバーヘッドがあります。あなたのコンピュータと開発者はネイティブ用のnode.jsで時間を費やします

    開発中にNode.jsをDockerでラップするのは悪い習慣です。

    開発中にDockerが必要な場合は、

    • セットアップMongoDB、Redisなどの外部依存関係を持つ開発者/ CI/QA環境docker-composeが最適なソリューション権限です。
    • 配送可能なアーティファクトを作る。 Dockerfile + .dockerignoreは、どのようにアーチファクトを作成するのかを説明します。
  • +0

    私はこれが好ましい方法ではないことを認識していませんでした。これはNodeまたはDockerコミュニティの他のどこに文書化されていますか? – djt

    +0

    私は会議/会合ビデオで数回見ましたが、私はこれに関する文書を覚えていません。それは単なる常識であり、ドキュメンテーションの一部ではありません。 – galkin