私は、javascriptファイルを持つpythonでアプリケーションを構築しています。私はbrowserifyを使用したいので、私はrequire
呼び出しで私のjsファイルで使用できるいくつかのノードモジュールをインストールしたいと思います。私はこれらのノードモジュールをホストマシンではなく私のコンテナに入れたい。ここでは、ノード固有のコンテナのDocker設定です。ホストボリューム共有で上書きされるドッカーコンテナファイル
### Dockerfile
FROM node:5.9.1
RUN npm install -g browserify
RUN mkdir /js_scripts
ADD package.json /js_scripts/
WORKDIR /js_scripts
RUN npm install # This installs required packages from package.json
RUN ls # lists the node_modules directory indicating successful install.
は今、私はコンテナにbrowserify main.js -o bundle.js
コマンドを実行できるように、このコンテナと私のホストマシンからjs files
を共有したいです。ここにdocker-compose.yml
があり、host_js_files
を私のjs_scripts
ディレクトリにコピーします。
node:
build: .
volumes:
- ./host_js_files:/js_scripts
私はjs_scripts
ディレクトリにコンテナdocker-compose run node bash
とls
を実行すると、私は唯一のホスト・ボリュームからの私のjsファイルを参照してください、そして私のnode_modules
ディレクトリが表示されていません。これは、ドッカーでボリュームがどのように設定されているかに基づいて意味があります。
しかし、これらのノードモジュールを検索するbrowserify
を正常に実行するには、これらをnode_modules
に入れておきたいと思います。コンテナにノードモジュールをグローバルにインストールしたり、ホストマシンにモジュールをインストールしたりせずにこれを行う良い方法はありますか?
ありがとうございます。
私はまったく同じ問題を抱えています。あなたは偶然、実用的な解決策を見つけましたか? – Spock
「新しいコンテナを作成するたびにすべての依存関係をダウンロードしないようにnode_modulesディレクトリにボリュームをマウントできます」と表示された正しい答えに基づいて、 'node_modules'ディレクトリをホストマシンから共有する必要がありました。この方法では、コンテナーが初めて始動したときに、ノード・モジュールを共用ボリュームにダウンロードし、コンテナが始動するたびにアクセス可能でした。 – akotian