Впервые я работаю с ядром NET, поэтому я очень новичок в этой области.
Последнее обновление Visual Studio 2017 Docker 18.03.1
IЯ создал проект, который отлично работает в Visual Studio, и теперь хочу развернуть его в моем локальном Docker.
Я следовал инструкциям по сборке и запуску здесь: https://docs.microsoft.com/en-us/dotnet/core/docker/building-net-docker-images
Если я попробуючтобы запустить приложение ASP.NET локально, я получаю следующее:
dotnet run
C:\Users\barn\source\repos\FLG\docker-compose.dcproj : error MSB4236: The SDK 'Microsoft.Docker.Sdk' specified could not be found.
The build failed. Please fix the build errors and run again.
Однако, когда я загружаю образец приложения из статьи, он работает нормально, и я могу развернуть его в Docker, и все просто работает.
Это привело меня к выводу, что причина не в настройке Windows (пути и т. Д.), А в настройке проекта VS.
Итак, я посмотрел файлы Docker, но не могунайти что-нибудь, где указан Docker sdk
Theirs:
FROM microsoft/aspnetcore-build:2.0 AS build-env
WORKDIR /app
# copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# build runtime image
FROM microsoft/aspnetcore:2.0
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "aspnetapp.dll"]
Mine:
FROM microsoft/aspnetcore:2.0-nanoserver-1709 AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/aspnetcore-build:2.0-nanoserver-1709 AS build
WORKDIR /src
COPY *.sln ./
COPY FLG/FLG.csproj FLG/
RUN dotnet restore
COPY . .
WORKDIR /src/FLG
RUN dotnet build -c Release -o /app
FROM build AS publish
RUN dotnet publish -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "FLG.dll"]
Я пытался изменить эту строку
aspnetcore:2.0-nanoserver-1709
до
aspnetcore:2.0
Но без разницы.
РЕДАКТИРОВАТЬ:
1) Я нашел, где МУпоминается icrosoft.Docker.Sdk, он находится в файле, который НЕ виден из VS, но я могу увидеть файл в FileExplorer (docker-compose.dcproj), содержимое выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" Sdk="Microsoft.Docker.Sdk">
<PropertyGroup Label="Globals">
<ProjectVersion>2.0</ProjectVersion>
<DockerTargetOS>Windows</DockerTargetOS>
<ProjectGuid>26178887-f40e-42ab-85cd-059a38097c71</ProjectGuid>
<DockerLaunchBrowser>True</DockerLaunchBrowser>
<DockerServiceUrl>http://{ServiceIPAddress}/api/values</DockerServiceUrl>
<DockerServiceName>flg</DockerServiceName>
</PropertyGroup>
<ItemGroup>
<None Include="docker-compose.override.yml">
<DependentUpon>docker-compose.yml</DependentUpon>
</None>
<None Include="docker-compose.yml" />
<None Include=".dockerignore" />
</ItemGroup>
</Project>
2) Образец приложения НЕ имеет этот файл, фактически он вообще не имеет "проекта" docker-compose