docker - 如何使用 React 模板修复 ASP.NET Core 的 Dockerfile?

标签 docker asp.net-core

我有ff。我的 aspnet core 2.1 的 dockerfile 和 React 模板 webapp。我的aspnet core sdk是2.1.301。但构建总是失败。错误消息位于下面

FROM microsoft/dotnet:2.1.1-aspnetcore-runtime-alpine3.7 AS base
WORKDIR /app

FROM microsoft/dotnet:2.1.301-sdk-alpine3.7 AS build

# set up node
ENV NODE_VERSION 10.5.0
ENV NODE_DOWNLOAD_SHA 5d77d2c68c06404028f063dca0947315570ff5e52e46f67f93ef9f6cdcb1b4a8
RUN curl -SL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz" --output nodejs.tar.gz \
&& echo "$NODE_DOWNLOAD_SHA nodejs.tar.gz" | sha256sum -c - \
&& tar -xzf "nodejs.tar.gz" -C /usr/local --strip-components=1 \
&& rm nodejs.tar.gz \
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs

WORKDIR /src
COPY webapp.csproj .
RUN dotnet restore webapp.csproj
COPY . .
RUN dotnet build webapp.csproj -c Release -o /app

FROM build AS publish
RUN dotnet publish webapp.csproj -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "webapp.dll"]

这是日志

Sending build context to Docker daemon  69.63MB
Step 1/17 : FROM microsoft/dotnet:2.1.1-aspnetcore-runtime-alpine3.7 AS base
 ---> a50663099cc8
Step 2/17 : WORKDIR /app
 ---> Using cache
 ---> eb9a35d94f33
Step 3/17 : FROM microsoft/dotnet:2.1.301-sdk-alpine3.7 AS build
 ---> d5accd0a6f97
Step 4/17 : ENV NODE_VERSION 10.5.0
 ---> Running in e7797f27733e
Removing intermediate container e7797f27733e
 ---> c1b611e0b1eb
Step 5/17 : ENV NODE_DOWNLOAD_SHA 
5d77d2c68c06404028f063dca0947315570ff5e52e46f67f93ef9f6cdcb1b4a8
 ---> Running in 07ee74558e7a
Removing intermediate container 07ee74558e7a
 ---> 3d0a2d6f2a9f
Step 6/17 : RUN curl -SL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz" --output nodejs.tar.gz     && echo "$NODE_DOWNLOAD_SHA nodejs.tar.gz" | sha256sum -c -     && tar -xzf "nodejs.tar.gz" -C /usr/local --strip-components=1     && rm nodejs.tar.gz     && ln -s /usr/local/bin/node /usr/local/bin/nodejs
 ---> Running in c72c1e9a3593
/bin/sh: curl: not found
The command '/bin/sh -c curl -SL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz" --output nodejs.tar.gz     && echo "$NODE_DOWNLOAD_SHA nodejs.tar.gz" | sha256sum -c -     && tar -xzf "nodejs.tar.gz" -C /usr/local --strip-components=1     && rm nodejs.tar.gz     && ln -s /usr/local/bin/node /usr/local/bin/nodejs' returned a non-zero code: 127

我基于 Docker for Visual Studio 的输出生成了上面的 Dockerfile,然后删除了 docker compose 项目,并将 Dockerfile 从父文件夹(与 .sln 一起)移动到项目本身内部(与 .csproj 一起)

我相信该模板在 Startup.cs 中包含 CRA 构建,因此它需要 Node (npm)

最佳答案

哦,抱歉。我现在开始工作了,我只需要使用 microsoft/dotnet:2.1.301-sdk 而不是 Alpine 来进行构建。然后就正常了

关于docker - 如何使用 React 模板修复 ASP.NET Core 的 Dockerfile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51007546/

相关文章:

docker - 如何从Docker保存Zeppelin Notebook?

mysql - 如何在官方 MySql docker 镜像中以 root 身份运行 mysqld?

c# - Asp.Net Core 和脚手架

c# - ASP.NET core 是否可以仅在开发模式下在 Controller 中配置操作?

asp.net-core - 如何在 Hub 外部获取 SignalR 核心中的当前 ClaimsPrincipal

php - docker + PHP - 错误 : Couldn't connect to Docker daemon?

docker - 如何在不重新启动的情况下更改 docker 容器的源代码?

ssl - CORS 在没有 SSL 证书的 IIS 服务器中无法工作

ASP.NET Core 使用 JWT 登录

docker - 有没有办法以分离模式启动 Docker 容器?