私は.NET Core appドッカー画像を作成しようとしています。しかし、どうやってプロジェクトのNuGet依存関係をイメージに取り込むのか分かりません。私は.NETのコアコンソールアプリケーションを作成しましたシンプルの理由.NET Core appドッカーのイメージに依存関係を含めるにはどうすればいいですか?
:
using System;
using Newtonsoft.Json;
namespace ConsoleCoreTestApp
{
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine($"Hello World: {JsonConvert.False}");
}
}
}
それはちょうどNewtonsoft.Json
に1つのNuGet依存性を持っています。 Visual Studioからアプリケーションを実行すると、すべて正常に動作します。
私はプロジェクトからドッカーイメージを作成し、そこからアプリを実行しようとすると、しかし、それが依存関係を見つけることができません:Newtonsoft.Json.dll
がコピーされていないので、
# dotnet ConsoleCoreTestApp.dll
Error: assembly specified in the dependencies manifest was not found -- package: 'Newtonsoft.Json', version: '9.0.1', path: 'lib/netstandard1.0/Newtonsoft.Json.dll'
これが予想されますVisual Studioで出力フォルダに移動します。
はここで私が使用しているDockerfile
です:
FROM microsoft/dotnet:1.0.0-core
COPY bin/Debug /app
をこの問題に対処する推奨方法はありますか?
コンテナ内にdotnet restore
を実行したくありません(コンテナが動作するたびにすべての依存関係を再ダウンロードしたくないため)。
私はRUN dotnet restore
のエントリをDockerfile
に追加することができましたが、をもう基本イメージとして使用できませんでした。
Visual Studioですべての依存関係を出力フォルダにコピーする方法が見つかりませんでした(通常の.NET Frameworkプロジェクトと同様)。
私はネットの人ではないので、私の無知を許しています...なぜ、 'RUN dotnet restore 'を追加すると、あなたはドットネットベースイメージを使用できなくなりますか? – Matt
@Mattは正しいですが、 'microsoft/dotnet'ベースイメージの使用を妨げてはいけません。 –
@Mattコアイメージにrestoreコマンドが含まれていないためです。 –