コンテナとホストのために別々のNodeThangモジュールでDockerizedノードアプリケーションを作成する方法
DockerとノードがあるGotchaがあります
次のように動作します. あなたはDockerコンテナとして実行したいノードベースのプロジェクトを持っています あなた The あなたのDocker画像の残りの部分は あなたはDockerにコンテナとしてイメージを走らせるよう頼みます があるならば このGotchaの症状は奇妙な依存バージョンの不一致、パッケージを欠落、などのような感嘆符が含まれています
あなたが何かを非難するならば、プロジェクトと同じディレクトリでアプリケーション依存関係を保つために、ノードを非難してください.これには利点がありますが、欠点もあります.
これを修正する方法は、あなたのDockerイメージを持っていることです
私がこの好みのために説明した方法は
フィックス
私のような場合は、上記のすべての説明をスキップし、この見出しにスクロールします.さらにADOなしでは、この問題を修正することができます.
私の修正のために必要なツール ドッカー構成 仮定 あなたのアプリケーションコードを保持する あなた 必要に応じてノードDockerベースイメージを使用します私は、ちょうど現在の好みを例として含みます. あなた
ドッカー作曲
Dockerfile
包む
今あなたのコンテナが起動すると、あなたのアプリケーションが使用されます
また、実行することができます
私は、次でテストしました.JSプロジェクトとそれは偉大に働いた.それはあなたのために働く願っています.ハッピープログラミング!
node_modules
ホスト上のディレクトリはnode_modules
コンテナ内.これは通常、dev環境で起こります.そこでは、コンテナがホストからのファイルへの更新を受け取るようになります.次のように動作します.
Dockerfile
ランnpm install
画像の作成node_modules
ディレクトリのようなもの/app
すべてのノードパッケージであなたのpackage.json
参考文献/app
コンテナのディレクトリをホスト上のプロジェクトのディレクトリに格納します.node_modules
ホスト上のプロジェクトのディレクトリは、/app/node_modules
コンテナのディレクトリ.あなたが何かを非難するならば、プロジェクトと同じディレクトリでアプリケーション依存関係を保つために、ノードを非難してください.これには利点がありますが、欠点もあります.
これを修正する方法は、あなたのDockerイメージを持っていることです
node_modules
別のディレクトリ.これは言うより易しいあなたのホストが持っている限りnode_modules
に変換されるディレクトリ/app/node_modules
, ノードは常にそれが近接しているので、それを好むでしょう.私がこの好みのために説明した方法は
/app/node_modules
人が何であるかにかかわらず、空であるnode_modules
ディレクトリが含まれます.フィックス
私のような場合は、上記のすべての説明をスキップし、この見出しにスクロールします.さらにADOなしでは、この問題を修正することができます.
私の修正のために必要なツール
npm
, など)yarn
/app
インザコンテナdocker-compose.yml
, Dockerfile
, and package.json
あなたのアプリを実行するために必要なすべての他のものをホールドDockerfile
自分勝手だCMD
or ENTRYPOINT
, などドッカー作曲
version: "3.8"
services:
web:
container_name: my-service
hostname: my-service
build:
context: . # The Dockerfile is in the current directory
volumes:
- .:/app
- /app/node_modules # Ensure `/app/node_modules` is always empty in the container
最終行- /app/node_modules ...
) が最も重要です.それは/app/node_modules
はコンテナ内で常に空です.Dockerfile
FROM node:15.3-alpine3.12
WORKDIR / # Important for installing node packages
COPY package.json package.json
# Install Node dependencies at `/node_modules` in the container.
RUN set -x \
&& yarn install --modules-folder=/node_modules
ENV PATH=/node_modules/.bin:$PATH
WORKDIR /app
CMD ["/app/scripts/run.sh"]
包む
今あなたのコンテナが起動すると、あなたのアプリケーションが使用されます
/node_modules
依存性を見つけるにはまた、実行することができます
yarn install
あなたが何をしてもnode_modules
コンテナの環境を汚染することを気にせずにホストに.The /app/node_modules
コンテナのディレクトリは空のままです.私は、次でテストしました.JSプロジェクトとそれは偉大に働いた.それはあなたのために働く願っています.ハッピープログラミング!
Reference
この問題について(コンテナとホストのために別々のNodeThangモジュールでDockerizedノードアプリケーションを作成する方法), 我々は、より多くの情報をここで見つけました https://dev.to/dreki/how-to-create-a-dockerized-node-application-with-separate-nodemodules-for-container-and-host-2b5nテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol