Я пытаюсь запустить приложение 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 - но как мне узнать, что это за нано-сервер, если нет сообщения об ошибке?
Выход [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": {
}
},
Нано-сервер не поддерживает полную платформу .NET, вы можете запускать только приложения netstandard, поэтому это не сработает.