Я использую dotnetcore для разработки приложений, и одна вещь, которую я заметил при создании aspnetcore (2.1) web api, была опция «Включить Docker» в проекте.См. Ниже:
Это было действительно здорово, если я позволил мне запустить мое веб-приложение на моем локальном докере для отладки!: -D Я вижу, что у меня есть новый файл .dcproj для проекта Docker, файл Docker в моем веб-API и файл YML в проекте Docker.Все, что мне нужно для запуска в отладке.
Теперь я создаю консольное приложение dotnetcore (опять же, ядро 2.1 - это версия, которую я использую).К сожалению, у меня нет опции «Включить поддержку Docker» для консольных приложений, и я хотел бы запустить мое консольное приложение в моем локальном экземпляре Docker.Версия Visual Studio, которую я использую, выглядит следующим образом:
Я искал и не могу найти проект Docker как проектвведите шаблон.Поэтому я прибег к копированию проекта docker из моего веб-приложения и изменению его для запуска моего консольного приложения ... не говоря уже о том, что я не могу запустить его.Я получаю следующую ошибку при попытке запустить приложение Docker:
Не удалось запустить адаптер отладки
Мой docker-файл идентичен файлу из веб-проекта (который работает), за исключением моего проекта и имен dll (они установлены правильно).
Мой yml-файл такой же, кромеимена меняются также.Не уверен, что я делаю неправильно - кому-нибудь удалось этого добиться?В конечном итоге я хочу отладить консольное приложение, когда оно запускается в докере через отладку Visual Studio.
Спасибо за любые указатели заранее !!
Для многословия, вот мой Dockerfile :
FROM microsoft/dotnet:2.1.2-runtime-alpine3.7 AS base
WORKDIR /app
EXPOSE 52649
EXPOSE 44331
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY AI.EmitterJob.csproj AI.EmitterJob/
RUN dotnet restore AI.EmitterJob/AI.EmitterJob.csproj
COPY . .
WORKDIR /src/AI.EmitterJob
RUN dotnet build AI.EmitterJob.csproj -c Release -o /app
FROM build AS publish
RUN dotnet publish AI.EmitterJob.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "AI.EmitterJob.dll"]
и docker-compose.yml file:
version: '3.4'
services:
ai.emitterjob:
image: ${DOCKER_REGISTRY}ai_emitter
build:
context: .
dockerfile: ../AI.EmitterJob/Dockerfile
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_HTTPS_PORT=44331
ports:
- "52649:80"
- "44331:443"
volumes:
- ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
- ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
Примечание. Я знаю, что здесь не нужно выставлять порты или использовать тома (или установитьenv vars) для консольного приложения, но я хотел, чтобы изменения от работающего файла веб-докера были как минимум.