【发布时间】: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