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容器中,对此我无法理解。
想请教以下问题:
- Visual Studio/MSBuild在Debug模式下实际使用的镜像包含哪些阶段?
- 若未执行所有阶段,源代码如何传入镜像/容器?
- 若仅构建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
相关产品推荐
相关产品推荐

