繁体   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