首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用VisualStudio2019在Docker容器中运行ASP.NET Core3.1项目?

如何使用VisualStudio2019在Docker容器中运行ASP.NET Core3.1项目?
EN

Stack Overflow用户
提问于 2020-01-03 00:09:51
回答 2查看 10.2K关注 0票数 8

我创建了一个基于ASP.NET Core3.1框架的Web项目。后来,我决定将它部署在Linux上,而不是Windows上。在将应用程序部署到Linux上之前,我希望能够在本地使用Windows 7上的VisualStudio2019在停靠容器中运行。

我在我的机器上安装了用于窗口的码头工具箱和Oracle。

由于我的项目不是用Docker创建的,所以我正确地单击了我的项目>> Add >> "Add“支持,该支持创建了Dockerfile

现在,当我尝试在Visual上构建/调试我的应用程序时,我会得到以下错误

代码语言:javascript
运行
复制
Error   CTC1003 Visual Studio container tools require Docker to be running. ProjectName C:\Users\MyUsername\.nuget\packages\microsoft.visualstudio.azure.containers.tools.targets\1.9.10\build\Container.targets    198 

我通过点击“码头快速启动终端”启动了码头。我还能够验证default虚拟盒是否正在运行。此外,我在默认VM上添加了"C_Drive“作为共享文件夹。

如何使用docker正确启动/调试解决方案?

这里是我的Dockerfile的内容

代码语言:javascript
运行
复制
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["ProjectName/ProjectName.csproj", "ProjectName/"]
RUN dotnet restore "ProjectName/ProjectName.csproj"
COPY . .
WORKDIR "/src/ProjectName"
RUN dotnet build "ProjectName.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "ProjectName.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "ProjectName.dll"]

我还试图通过右键单击我的项目>>添加>>添加容器Orchestraintor支持哪个docker-compose项目来添加docker-compose支持。

当我使用Docker Composer运行该应用程序时,该应用程序运行Visual时,会为调试状态转橙色“并立即停止。

代码语言:javascript
运行
复制
-------------------------------------------------------------------
You may only use the Microsoft .NET Core Debugger (vsdbg) with
Visual Studio Code, Visual Studio or Visual Studio for Mac software
to help you develop and test your applications.
-------------------------------------------------------------------
  It was not possible to find any installed .NET Core SDKs
  Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from:
      https://aka.ms/dotnet-download
The target process exited without raising a CoreCLR started event. Ensure that the target process is configured to use .NET Core. This may be expected if the target process did not run on .NET Core.
The program 'dotnet' has exited with code 145 (0x91).

更新1

下面是在"Build“输出下打印的内容

代码语言:javascript
运行
复制
1>------ Build started: Project: MyProject, Configuration: Debug Any CPU ------
1>MyProject -> C:\MyProjects\MyProject\MyProject\bin\Debug\netcoreapp3.1\MyProject.dll
1>docker run -dt -v "C:\Users\MyUsername\vsdbg\vs2017u5:/remote_debugger:rw" -v "C:\MyProjects\MyProject\MyProject:/app" -v "C:\MyProjects\MyProject:/src" -v "C:\Users\MyUsername\AppData\Roaming\Microsoft\UserSecrets:/root/.microsoft/usersecrets:ro" -v "C:\Users\MyUsername\AppData\Roaming\ASP.NET\Https:/root/.aspnet/https:ro" -v "C:\Users\MyUsername\.nuget\packages\:/root/.nuget/fallbackpackages2" -v "C:\Program Files\dotnet\sdk\NuGetFallbackFolder:/root/.nuget/fallbackpackages" -e "DOTNET_USE_POLLING_FILE_WATCHER=1" -e "ASPNETCORE_ENVIRONMENT=Development" -e "ASPNETCORE_URLS=https://+:443;http://+:80" -e "NUGET_PACKAGES=/root/.nuget/fallbackpackages2" -e "NUGET_FALLBACK_PACKAGES=/root/.nuget/fallbackpackages;/root/.nuget/fallbackpackages2" -P --name MyProject --entrypoint tail myproject:dev -f /dev/null
1>docker: Error response from daemon: invalid mode: /root/.nuget/fallbackpackages.
1>See 'docker run --help'.
1>C:\Users\MyUsername\.nuget\packages\microsoft.visualstudio.azure.containers.tools.targets\1.9.10\build\Container.targets(198,5): error CTC1003: Visual Studio container tools require Docker to be running.
1>Done building project "MyProject.csproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

以下是VS在“容器工具”输出下打印的内容

代码语言:javascript
运行
复制
========== Checking for Container Prerequisites ==========
Verifying that Docker Desktop is installed...
Docker Desktop is installed.
========== Verifying that Docker Desktop is running... ==========
Verifying that Docker Desktop is running...
Visual Studio container tools require Docker to be running.
Docker Desktop is not running.
========== Finished ==========

更新2

按照下面的Wiebe Tijsma答案,我将docker-composer.yml文件更新为

代码语言:javascript
运行
复制
version: '3.4'

services:
  myproject:
    image: ${DOCKER_REGISTRY-}myproject
    build:
      context: .
      dockerfile: MyProject/Dockerfile
    volumes:
      - photos:/app/Storage

volumes:
  photos:

构建现在似乎运行良好,但运行失败。使用docker-composer运行应用程序时,Visual将引发此错误。

启动失败,因为容器中的目录‘/remote_调试器’是空的。这可能是由于Desktop使用的共享驱动器凭据过期造成的。尝试在Desktop设置的共享驱动器页面中重置凭据,然后重新启动Docker

下面是的最新生成输出

代码语言:javascript
运行
复制
1>------ Build started: Project: MyProject, Configuration: Debug Any CPU ------
1>MyProject -> C:\MyProjects\MyProject\MyProject\bin\Debug\netcoreapp3.1\MyProject.dll
2>------ Build started: Project: docker-compose, Configuration: Debug Any CPU ------
2>docker-compose  -f "C:\MyProjects\MyProject\docker-compose.yml" -f "C:\MyProjects\MyProject\docker-compose.override.yml" -f "C:\MyProjects\MyProject\obj\Docker\docker-compose.vs.debug.g.yml" -p dockercompose15694150546677200279 --no-ansi up -d
2>Creating network "dockercompose15694150546677200279_default" with the default driver
2>Creating MyProject ...
2>Creating MyProject ... done
========== Build: 2 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
EN

回答 2

Stack Overflow用户

发布于 2020-01-07 14:02:20

在我的示例中,发生此错误是因为我还将卷映射到/app,这导致入口点+所有dotnet发布的文件不可用(初学者错误:)。

代码语言:javascript
运行
复制
myapp:
  container_name: myapp
  image: watch/myapp
  volumes:
    - ./testdata/:/app #<-- wrong
票数 3
EN

Stack Overflow用户

发布于 2020-01-03 10:44:33

您可以运行docker-compose并按如下方式启动项目:

代码语言:javascript
运行
复制
services:
    xxxx.service:
    image: ${DOCKER_REGISTRY}orderservice
    build:
      context: .
      dockerfile: Dockerfile`

这是莱克-作曲家的位置

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59571633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档