2016-08-04 9 views
2

プライベートgithubリポジトリが書いてホストしているモジュールを参照するnodejsプロジェクトがあります。 package.jsonでの依存関係は次のようになります:大丈夫ですNodejsプライベートモジュールとDockerコンテナ

"dependencies": { 
    ... other stuff ... 
    "my_module": "git+https://github.com/me/mymodule.git", 
} 

を、私は、アプリケーションのドッカーコンテナを作成したいのですが、私は、コンテナ内部のgitのを望んでいません。プライベートのnpm reposを使ってホストできることは分かっていますが、ビルドプロセスでソース(そのモジュールを含む)を取り出し、それをコンテナにコピーする方法を見つけることが大好きです。

コンテナにnpmをインストールしても問題ありませんが、gitの依存関係は気に入らなくなります。また、ビルドマシンでnpmをインストールしたくないので、私が望む任意のコンテナを自由に選択できるようにしたいのです...ビルドマシンがウィンドウバイナリをmongoモジュールにかけることは望ましくありません。それらを私のdebianコンテナにコピーしてください。

私は、devDependenciesの "my_module"に依存関係を入れて、Dockerコンテナ内で "npm install --production"を実行してから、その1つのモジュールをコピーすることを検討しました。それはdevDependenciesの意図とちょうど一致しません。

もっと良い/推奨されるソリューションはありますか?より良い方法があれば私はgithubでモジュールをホストしないようにしています(しかし、私はこのクライアントにとって意味のあるいくつかのプロジェクトで使っています)。

答えて

3

これは非常に簡単な解決策です。ノード・アプリケーション

npm installを構築するなど

は、その後、あなたのdockerfileにノードプロジェクトがディレクトリのインストール場所にそれを言って、 COPYコマンドを含めると、あなたが望むどこににコピーします。

編集:

問題に対処するには、あなたはそれが代わりのドッカーイメージのOSに対する正しい依存関係を構築するように、それがドッキングウィンドウの画像にコピーされています一度再構築NPM使用する必要があります@angelokに育て最初にノードパッケージがインストールされたOS。再構築についてはdocsを参照してくださいhere

+0

これも私が提案するものです。コンテナの外にプロジェクトを構築することができます。これらのコンテナを構築するために使用するホストマシンにいくつかの要件を適用します(gitとnpmを持つようなもの) –

+0

それはどこかに存在しなければなりません。ドッカーコンテナにない場合は、コンテナを構築するシステムよりも。あなたが自宅から配備するならば、あなたのローカルコンピュータであるかもしれません..またはあなたのjenkins/bamboo /どんなクラウドのサーバーでも。 :) –

+0

はい、ただし、ビルドサーバーからnpmをインストールする場合は、* os *のバイナリが作成されることに注意してください。たとえば、Windowsの場合は、win32上でCライブラリをコンパイルすることができます。そして、それらをLinuxコンテナにコピーしても動作しません。私たちがここで作っていることは、すべてのOSが同じであるということです。 – angelok

関連する問題