Я новичок в Docker, пытаюсь получить доказательство того, что концепт-контейнер работает на моей машине. Я сгенерировал проект веб-API .NET Core 3.0 с помощью команды dotnet new webapi
. Я добавил конечную точку контроллера, которая просто возвращает строку «Hello World».
using System;
using Microsoft.AspNetCore.Mvc;
namespace DockerHelloWorld.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class ValuesController : ControllerBase
{
[HttpGet]
public string Get()
{
return "Hello World!";
}
}
}
Я могу успешно построить и запустить этот проект, используя dotnet build
и dotnet run
соответственно.
Я сейчас пытаюсь заставить это работать в контейнере Docker. Вот мой Dockerfile:
FROM mcr.microsoft.com/dotnet/core/sdk:3.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 --framework netcoreapp3 --configuration Release --output out
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "DockerHellWorld.dll"]
Это скопировано и немного изменено с здесь .
У меня также есть следующий .dockerignore, на всякий случай, если это уместно:
bin\
obj\
*.md
*.png
Я запускаю следующие команды:
docker build -t dockerhelloworldimage .
docker create -p 3000:80 --name dockerhelloworldcontainer dockerhelloworldimage
docker start dockerhelloworldcontainer
Кажетсякак каждый шаг выполняется на основе вывода docker build
. Хэш возвращается после docker create
, а "dockerhelloworldcontainer" возвращается после docker run
.
Контейнер немедленно останавливается. Я вижу это с помощью команды docker container ls -a
.
docker logs dockerhelloworldcontainer
имеет следующий вывод: «Не удалось найти никаких установленных .NET Core SDK. Вы имели в виду запускать команды .NET Core SDK? Установите .NET Core SDK из: https://aka.ms/dotnet-download", но я действительно не знаю, как это понять.
Стоит отметить, что я получил нечто очень похожее на эту работу с .NETПриложение Core 2.2.
Есть идеи? Чего мне не хватать?