私はDockerの完全な初心者で、現在AngularプロジェクトでASP.NET Core 2.1を作成しようとしています。Dockerfor WindowsでLinuxコンテナを使用していて、IDEはVS2017コミュニティエディションです。
現在、私はこのエラーを受け取っています:
[1]「npm」がインストールされており、PATHディレクトリの1つにあることを確認してください。現在のPATH環境変数は次のとおりです:/ usr/local/sbin:/ usr/local/bin:/ usr/sbin:/ usr/bin:/ sbin:/ bin実行可能ファイルがこれらのディレクトリの1つにあることを確認するか、PATHを更新します。
私はDockerインスタンスまたはそれを呼び出すものにNode.jsをインストールする必要があると思います。Dockerfileを介してインストールする必要があります。私の仮定の間違いを指摘してください。また、使用しているコンテナの種類に関係なく、依存関係が確実にインストールされるようにするにはどうすればよいですか?私の将来のプロジェクトがさまざまなプラットフォームにインストールされることを期待しています。
Microsoft/dotnet:2.1-aspnetcore-runtimeコンテナーイメージにnpm/nodejsがインストールされていません。これをコンテナにインストールするには、dockerファイルを更新します
FROM Microsoft/dotnet:2.1-aspnetcore-runtime AS base
# Setup NodeJs
RUN apt-get update && \
apt-get install -y wget && \
apt-get install -y gnupg2 && \
wget -qO- https://deb.nodesource.com/setup_6.x | bash - && \
apt-get install -y build-essential nodejs
# End setup
WORKDIR /app
EXPOSE 80
Angular CLIライブリロードのみが機能していません。
これは、既存の問題と同様の解決策です。以下のリンクをたどってください AggregateException:1つ以上のエラーが発生しました。(1つ以上のエラーが発生しました。( 'npm'を開始できませんでした。これを解決するには:
パブリッシュのため、ベースのMicrosoft/dotnet:2.1-sdkイメージで発生します。したがって、この基本イメージにはdotnet sdkのみが含まれ、npmはこの基本イメージをインストールしていません。この問題を解決するには2つのステップがあります。
1)@Marcelの回答に記載されているように、既存のdotnet:2.1-sdkにインストールノードを追加します。
または
2) [〜#〜] node [〜#〜] イメージに基づいてフロントエンド側を構築するためにDockerfileに追加のステップを追加し、Angularを構築できます。ビルドが成功すると、生成されたフロントエンドファイルが取得され、最終ステージでランタイムイメージにコピーされます。したがって、このオプションではdotnet sdkにインストールを追加せず、複数のステージを持つ1つのDockerfileで、バックエンド側とフロントエンドサイトを別々に構築します。
2番目のオプションとして作成する場合は、以下のリンクに従って、同じDockerファイルでASP.NET Coreを使用してDockerfileにフロントエンドを個別に構築してください。
Dockerize ASP.NET Core Angular application(解決エラー:コマンド「npm install」がコード127で終了しました))
NPMとNode.jsをベースイメージにインストールする代わりに、フレームワークpreinstalledを持つベースイメージを選択することもできます。 hub.docker.com で公開されている私のdotnet-angularイメージを使用できます。交換するだけ
FROM Microsoft/dotnet:2.2-sdk AS build
と
FROM mjibrandl/dotnetcore-angular:latest AS build
私の記事もチェックしてください: 。NET Coreを公開するためのAzure DevOps YAMLパイプラインのセットアップAngular 7 docker container to Azure Container Registry