You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio调试ASP.NET Core+React容器化应用的Dockerfile疑问

问题:ASP.NET Core + React 容器化Debug配置异常

我使用“ASP.NET Core with React.js”模板创建了一个简单的ASP.NET Core+React Web应用并进行容器化。Release配置运行时一切正常,但Debug配置运行时,环境变量未正确设置,且npm项目未完成配置。

经调研,这是因为Visual Studio/MSBuild在Debug配置构建时不会执行Dockerfile的所有阶段。

我已尝试以下解决步骤:

  • 添加<ContainerDevelopmentMode>Regular</ContainerDevelopmentMode>
  • 添加<DockerfileFastModeStage>final</DockerfileFastModeStage>
  • 删除所有Docker镜像、卷和容器

我发现添加到Base阶段的所有内容都会应用到Debug容器中,对此我无法理解。

想请教以下问题:

  1. Visual Studio/MSBuild在Debug模式下实际使用的镜像包含哪些阶段?
  2. 若未执行所有阶段,源代码如何传入镜像/容器?
  3. 若仅构建Base阶段,容器内部使用的入口点是什么?

我的Dockerfile如下:

#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
RUN apt-get update
RUN apt-get install -y curl
RUN apt-get install -y libpng-dev libjpeg-dev curl libxi6 build-essential libgl1-mesa-glx
RUN curl -sL https://deb.nodesource.com/setup_lts.x | bash -
RUN apt-get install -y nodejs

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
RUN apt-get update
RUN apt-get install -y curl
RUN apt-get install -y libpng-dev libjpeg-dev curl libxi6 build-essential libgl1-mesa-glx
RUN curl -sL https://deb.nodesource.com/setup_lts.x | bash -
RUN apt-get install -y nodejs
COPY ["WebsiteLogos/WebsiteLogos.csproj", "WebsiteLogos/"]
RUN dotnet restore "WebsiteLogos/WebsiteLogos.csproj"
COPY . .
WORKDIR "/src/WebsiteLogos"
RUN dotnet build "WebsiteLogos.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebsiteLogos.csproj" -c Release -o /app/publish /p:UseAppHost=false

FROM node:16 AS build-web
COPY ./WebsiteLogos/ClientApp/package.json /WebsiteLogos/ClientApp/package.json
COPY ./WebsiteLogos/ClientApp/package-lock.json /WebsiteLogos/ClientApp/package-lock.json
WORKDIR /WebsiteLogos/ClientApp
RUN npm ci
COPY ./WebsiteLogos/ClientApp/ /WebsiteLogos/ClientApp
RUN npm run build

FROM base AS final
WORKDIR /app
ENV ASPNETCORE_HOSTINGSTARTUPASSEMBLIES=Microsoft.AspNetCore.SpaProxy
COPY --from=publish /app/publish .
COPY --from=build-web /WebsiteLogos/ClientApp/build ./ClientApp/build
ENTRYPOINT ["dotnet", "WebsiteLogos.dll"]

内容的提问来源于stack exchange,提问作者Stevie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:35:01