Как настроить проект Docker (dcproj) для основного веб-API-интерфейса dotnet в VS2017 - PullRequest
0 голосов
/ 04 октября 2018

Я использую dotnetcore для разработки приложений, и одна вещь, которую я заметил при создании aspnetcore (2.1) web api, была опция «Включить Docker» в проекте.См. Ниже:

enter image description here

Это было действительно здорово, если я позволил мне запустить мое веб-приложение на моем локальном докере для отладки!: -D Я вижу, что у меня есть новый файл .dcproj для проекта Docker, файл Docker в моем веб-API и файл YML в проекте Docker.Все, что мне нужно для запуска в отладке.

Теперь я создаю консольное приложение dotnetcore (опять же, ядро ​​2.1 - это версия, которую я использую).К сожалению, у меня нет опции «Включить поддержку Docker» для консольных приложений, и я хотел бы запустить мое консольное приложение в моем локальном экземпляре Docker.Версия Visual Studio, которую я использую, выглядит следующим образом:

enter image description here

Я искал и не могу найти проект Docker как проектвведите шаблон.Поэтому я прибег к копированию проекта docker из моего веб-приложения и изменению его для запуска моего консольного приложения ... не говоря уже о том, что я не могу запустить его.Я получаю следующую ошибку при попытке запустить приложение Docker:

Не удалось запустить адаптер отладки

enter image description here

Мой 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) для консольного приложения, но я хотел, чтобы изменения от работающего файла веб-докера были как минимум.

1 Ответ

0 голосов
/ 04 октября 2018

На тот случай, если кто-то еще захочет попробовать, я наконец-то получил его!

Когда я скопировал файл Docker, единственная строка, которую я изменил, была следующей:

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base

На это:

FROM microsoft/dotnet:2.1.2-runtime-alpine3.7 AS base

Потому что раньше я использовал эту альпийскую сборку в качестве базового изображения.Возврат к базовому образу aspnetcore сделал эту работу нормально.

Очевидно, что это не идеально для правильного развертывания, и мне нужно найти достаточную замену базового образа aspnetcore, на котором будет установлена ​​среда выполнения dotnetcore.

Я счастлив, что теперь могу отлаживать консольное приложение через докер!: -D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...