我正在使用dotnetcore开发应用程序,在创建aspnetcore (2.1)时,我注意到了一件事: web是在项目上“启用Docker”的选项。见下文:
这对于允许我在本地停靠程序上运行web应用程序进行调试非常棒!:-D我看到我有一个新的.dcproj文件用于码头项目,一个码头文件在我的web和一个yml文件在码头项目。在调试中运行所需的一切。
现在,我正在创建一个dotnetcore控制台应用程序(同样,核心2.1是我使用的版本)。不幸的是,我没有一个“启用码头支持”选项的控制台应用程序,并希望运行我的控制台应用程序在我的本地码头实例。我正在运行的Visual版本如下:
我看了一下,似乎找不到作为项目类型模板的docker项目。所以我从我的web应用程序中复制了docker项目并修改它来运行我的控制台应用程序.不用说,我无法做到这一点。当我试图启动对接程序组合时,我会得到以下错误:
未能启动调试适配器
我的停靠文件与来自web项目的文件(可以工作)是相同的,但我的项目和dll名称除外(这些设置正确)。
我的yml文件也是相同的,除了名称也被更改。不知道我做错了什么--有人成功做到了吗?当控制台应用程序通过Visual调试在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 ),但我希望将工作的web停靠文件的更改保持在最低限度。
发布于 2018-10-04 11:19:37
万一其他人想试试,我终于让它起作用了!
当我复制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调试我的控制台应用程序了!
https://stackoverflow.com/questions/52643874
复制相似问题