プライベート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でモジュールをホストしないようにしています(しかし、私はこのクライアントにとって意味のあるいくつかのプロジェクトで使っています)。
これも私が提案するものです。コンテナの外にプロジェクトを構築することができます。これらのコンテナを構築するために使用するホストマシンにいくつかの要件を適用します(gitとnpmを持つようなもの) –
それはどこかに存在しなければなりません。ドッカーコンテナにない場合は、コンテナを構築するシステムよりも。あなたが自宅から配備するならば、あなたのローカルコンピュータであるかもしれません..またはあなたのjenkins/bamboo /どんなクラウドのサーバーでも。 :) –
はい、ただし、ビルドサーバーからnpmをインストールする場合は、* os *のバイナリが作成されることに注意してください。たとえば、Windowsの場合は、win32上でCライブラリをコンパイルすることができます。そして、それらをLinuxコンテナにコピーしても動作しません。私たちがここで作っていることは、すべてのOSが同じであるということです。 – angelok