Приложение не возвращает сообщение об ошибке при запуске Kestrel на nanoserver в Docker (отсутствует DLL?)

Я пытаюсь запустить приложение Kestrel, нацеленное на net461, в Docker, но оно завершается неудачно без сообщения об ошибке. На Windows 10 работает нормально.

Мой Dockerfile это:

FROM microsoft/nanoserver
SHELL ["powershell"]
RUN new-item c:\MyAPI -itemtype directory
COPY .\\bin\\Debug\\net461\\win7-x64\\publish MyAPI  
EXPOSE 5000
# ENTRYPOINT ["C:\\MyAPI", "MyAPI.exe"]

После публикации я создаю изображение:

docker build -t myapi .

и запустить его:

docker run -it --entrypoint powershell myapi

Затем, когда я запускаю приложение вручную в контейнере, оно останавливается без ошибок:

> cd MyAPI
> .\MyAPI.exe
> $lastExitCode
-1073741515

Этот код ошибки (0xC0000135 или STATUS_DLL_NOT_FOUND), кажется, указывает, что отсутствует DLL - но как мне выяснить, что это за nanoserver, если нет сообщения об ошибке?

Выход из [System.Environment]::OSVersion является Win32NT 10.0.14393.0,

Зависимости от проекта:

"dependencies": {
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.1.0",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.1.0",
    "Microsoft.AspNetCore.Cors": "1.1.0",
    "Microsoft.AspNetCore.Mvc": "1.1.1",
    "Microsoft.AspNetCore.Mvc.Core": "1.1.1",
    "Microsoft.AspNetCore.Owin": "1.1.0",
    "Microsoft.IdentityModel.Tokens": "5.1.2",
    "Microsoft.AspNetCore.Authentication.JwtBearer": "1.1.0",
    "Microsoft.AspNet.SignalR": "2.2.1",
    "Akka": "1.1.3",
    "Akka.Remote": "1.1.3"
},

"frameworks": {
    "net461": {
    }
}, 

1 ответ

Nano-сервер не поддерживает платформу Full .NET, вы можете запускать только нестандартные приложения, поэтому это не будет работать.

Другие вопросы по тегам