簡體   English   中英

如何在VS2017中為dotnet核心Web API應用設置docker項目(dcproj)

[英]How to setup a docker project (dcproj) for a dotnet core Web API app in VS2017

我使用dotnetcore開發應用程序,創建aspnetcore(2.1)Web api時注意到的一件事是該項目上的“啟用Docker”選項。 見下文:

在此處輸入圖片說明

對於允許我在本地docker上運行Web應用程序進行調試,這確實非常棒! :-DI看到我為docker項目有一個新的.dcproj文件,在我的Web api中有一個docker文件,在docker項目中有一個yml文件。 我需要在調試中運行的所有內容。

現在,我正在創建一個dotnetcore控制台應用程序(同樣,我正在使用core 2.1版本)。 不幸的是,我沒有控制台應用程序的“啟用Docker支持”選項,並且想在本地Docker實例中運行控制台應用程序。 我正在運行的Visual Studio版本如下:

在此處輸入圖片說明

我尋找了並且似乎找不到docker項目作為項目類型模板。 因此,我訴諸於從Web應用程序復制docker項目並對其進行修改以運行我的控制台應用程序...不用說,我無法使其運行。 嘗試啟動docker compose時出現以下錯誤:

無法啟動調試適配器

在此處輸入圖片說明

除了我的項目和dll名稱(正確設置)之外,我的docker文件與網絡項目(有效)中的文件相同。

我的yml文件也一樣,除了名稱也被更改了。 不知道我在做什么錯-是否有人設法做到這一點? 我最終想通過Visual Studio調試在控制台應用程序在docker中運行時對其進行調試。

感謝您提前提出任何建議!

詳細來說,這是我的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文件:

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),但我想將對Web docker文件的更改保持在最小范圍內。

以防萬一其他人想嘗試一下,我終於讓它工作了!

當我在docker文件上復制時,我唯一更改的行是:

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

對此:

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

因為我以前曾使用該高山建築作為基本圖像。 返回到aspnetcore基本映像可使此工作正常進行。

顯然,這對於正確的部署不是理想的,我需要找到一個足夠的替代品來安裝將安裝dotnetcore運行時的aspnetcore基本映像。

我很高興現在可以通過docker調試控制台應用程序! :-D

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM