[英]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.