gpt4 book ai didi

azure - ASP.NET Core 在 docker 构建之前运行 Angular 构建

转载 作者:行者123 更新时间:2023-12-02 19:38:32 24 4
gpt4 key购买 nike

我们有一个基本的 Docker 文件,需要构建我们的 ASP.NET Core 应用程序。我们的前端是 Angular2 的。

在我们当前的流程中,我们这样做:

  • npm run build:构建 angular2 前端部分,写入输出JS 文件位于 /wwwroot 中。这些文件将被 ASP.NET Core 包含 View 和 Controller 。
  • 然后我们 docker build 构建并封装我们的 ASP.NET Core 项目。然后我们打算将其部署到任何地方。

我们的 DockerFile:

FROM microsoft/dotnet:latest
COPY . /app
WORKDIR /app

RUN ["dotnet", "restore"]
RUN ["dotnet", "build"]

EXPOSE 5000/tcp
ENV ASPNETCORE_URLS http://*:5000

ENTRYPOINT ["dotnet", "run"]

我们的问题

如何将我们的 dockerfiles 步骤添加到:

  • 运行 Angular2 前端所需的 npm install 文件。我们的 package.json 文件位于 ASP.NET 项目根目录。
  • 运行npm run build:prod:构建 Angular2 项目并在 wwwroot 中生成文件。

在运行dotnet build之前。我们试图在RUN [“dotnet”,“build”]之前简单地尝试指示这些命令:

RUN npm install
RUN npm install -g angular-cli
RUN npm run build:prod

但 Azure 返回“意外错误”,但没有更多详细信息。

最佳答案

不可能直接从 docker 文件运行 npm 命令,docker 引擎需要像 shell 或 powershell 这样的程序来执行 npm 命令。这就是 docker 文件中的 coomand RUN npm install 不起作用的原因。

您可以尝试指定用于运行 npm 命令的 powershell

RUN powershell -NoProfile -Command RUN npm install

我建议如下替代方案

在解决方案的根目录中,使用 npm 命令、dotnet 恢复、构建、发布和运行命令创建构建脚本 build.sh

#!bin/bash
set -e
npm install
npm install -g angular-cli
npm run build:prod
dotnet restore
dotnet test test/WebTests/project.json
dotnet publish src/Web/project.json -c release -o $(pwd)/publish/web
dotnet run

注意:1.上面的build.sh只是一个示例,根据您的需要添加删除和编辑。

2.确保文件build.sh没有Windows特定的行结尾,否则shell将无法执行它。

从解决方案的根目录中,打开 Power shell 提示符现在我们可以直接使用 aspnetcore 构建镜像来运行应用程序,如下所示

docker run -it --rm -v "$pwd\:/sln" microsoft/aspnetcore-build:1.0.1 sh ./build.sh

选项-v "$pwd\:/sln"将当前目录挂载为容器中的/sln目录。

引用一篇写得很好的MSDN文章Optimized Docker Images

关于azure - ASP.NET Core 在 docker 构建之前运行 Angular 构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41617577/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com