.NET Core 앱 도커 이미지를 작성하려고합니다. 하지만 어떻게 프로젝트의 NuGet 종속성을 이미지에 적용해야하는지 알 수 없습니다. 단순 이유로.NET 핵심 응용 프로그램 도커 이미지에 종속성을 포함시키는 방법은 무엇입니까?
나는 .NET 코어 콘솔 응용 프로그램을 작성했습니다 :
using System;
using Newtonsoft.Json;
namespace ConsoleCoreTestApp
{
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine($"Hello World: {JsonConvert.False}");
}
}
}
을 그냥 Newtonsoft.Json
하나 명 NuGet 의존성을 가지고있다. Visual Studio에서 응용 프로그램을 실행하면 모든 것이 잘 동작합니다.
나는이 프로젝트에서 도커 이미지를 생성하고 거기에서 응용 프로그램을 실행하려고 할 때 그러나, 종속성 찾을 수 없습니다 :
# 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'
이 Newtonsoft.Json.dll
는 복사되지 않기 때문에 예상 할 수입니다 Visual Studio에서 출력 폴더로.
여기 내가 사용하고있어 Dockerfile
입니다 :이 문제를 다루는 권장되는 방법은
FROM microsoft/dotnet:1.0.0-core
COPY bin/Debug /app
있습니까?
컨테이너 내부에서 dotnet restore
을 실행하고 싶지 않습니다. 컨테이너가 실행될 때마다 모든 종속성을 다시 다운로드하지 않으려합니다.
나는 에 RUN dotnet restore
항목을 추가 할 수 있었지만 이제는 microsoft/dotnet:<version>-core
을 기본 이미지로 사용할 수 없다고 생각합니다.
그리고 Visual Studio에서 출력 폴더에 모든 종속성을 복사 할 수있는 방법을 찾을 수 없습니다 (일반 .NET Framework 프로젝트와 동일).
나는 .net 사용자가 아닙니다. 내 무지를 용서합니다. 왜 'RUN dotnet restore'를 추가하면 dotnet 기본 이미지를 사용할 수 없습니까? – Matt
@Matt가 정확하면'microsoft/dotnet'베이스 이미지를 사용해서는 안됩니다. –
@Matt 코어 이미지에 restore 명령이 포함되어 있지 않기 때문에. –