【问题标题】:How to run compiled SPA static files along with ASP.NET Core Web API publish in docker container?如何在 docker 容器中运行已编译的 SPA 静态文件以及 ASP.NET Core Web API 发布?
【发布时间】:2021-06-22 03:06:49
【问题描述】:

我创建了一个带有空 wwwroot 文件夹的 ASP.NET Core Web API 项目,该文件夹应该包含我在同一解决方案的单独文件夹中创建的 SPA ClientApp 的静态文件。

我在 ConfigureServices 中添加了以下内容:

  services.AddSpaStaticFiles(configuration =>
            {
                configuration.RootPath = "wwwroot";
            });

现在,我拥有的 ClientApp 文件夹与 API 项目的解决方案相同,并且 dockerfile 在我的 API 项目中。我想做的是首先使用 npm 生成静态文件,将其复制到 wwwroot,构建我的 API 项目并在发布时像 SPA 一样运行它。我想在 docker/docker-compose 文件中完成所有这些工作。

我已经为 API 配置了 dockerfile:

FROM mcr.microsoft.com/dotnet/aspnet:5.0

WORKDIR /app
COPY    bin/Debug/net5.0 .

ENTRYPOINT [ "dotnet","DemoApp.dll" ]

我想做这样的事情:

### STAGE 1: Build ###
FROM node:12.7-alpine AS build

WORKDIR /app
COPY ../ClientApp/package.json ../ClientApp/package-lock.json ./

RUN npm install

COPY .../ClientApp .
RUN npm run build

### STAGE 2: Run ###
FROM mcr.microsoft.com/dotnet/aspnet:5.0

WORKDIR /app
COPY    bin/Debug/net5.0 .
COPY --from=build /app/wwwroot
ENTRYPOINT [ "dotnet","DemoApp.dll" ]

但是,在为 Angular 构建 docker 时,它会抛出错误,提示找不到 ClientApp。那么,我怎样才能实现构建 Angular 应用程序,然后将其部署到 wwwroot,然后在单个 docker 文件中运行 API 项目?

注意:在创建项目时,我没有选择 SPA 模板作为后端,因为我想要关注点分离

【问题讨论】:

    标签: angular docker asp.net-core docker-compose


    【解决方案1】:

    首先,您的 ClientApp 文件夹应该存在于主机上当前目录的上一层。其次,当您复制 package.json 和复制其余文件时,您到 ClientApp 的路径是不同的。如果 npm install 正常(../ClientApp),那么您的 npm run 构建路径是错误的(.../ClientApp)。

    WORKDIR /app
    COPY ../ClientApp/package.json ../ClientApp/package-lock.json ./
    
    RUN npm install
    
    COPY ../ClientApp .
    RUN npm run build
    

    您还可以如下所示包括 dotnet 方面的还原和构建,而不必在复制 bin 输出之前在主机上构建它。 来自 mcr.microsoft.com/dotnet/aspnet:5.0 工作目录 /src COPY "<.csproj>" ./ 运行 dotnet 恢复 复制 。 . 运行 dotnet build "

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-02
      • 2022-01-08
      • 2017-01-16
      • 2017-07-05
      • 2014-10-16
      • 1970-01-01
      • 1970-01-01
      • 2020-04-24
      相关资源
      最近更新 更多