【问题标题】:The command 'dotnet' not found in Dockerfile在 Dockerfile 中找不到命令“dotnet”
【发布时间】:2023-04-11 10:12:01
【问题描述】:

我尝试使用 docker 构建映像来运行项目,但是当我运行 docker build 时,步骤 5/12:

/bin/sh: 1: dotnet: 未找到 命令“/bin/sh -c dotnet restore”返回非零代码:127

注意:我正在运行 .Net Core 和 Node 模块,所以我将所有内容都放在了 Dockerfile 中,可以吗?我是 Docker 新手

这是我的 dockerfile:

# Otenemos el SDK de .Net Core en la versión 2.1
FROM microsoft/dotnet:2.1-sdk
FROM node:11
WORKDIR /FrontEnd

#Copiamos el archivo .csproj y restauramos paquetes.
COPY *.csproj ./
RUN dotnet restore
COPY package.json ./
RUN npm install

# Copiamos todo lo demás
COPY . ./

FROM microsoft/dotnet:2.1-aspnetcore-runtime
WORKDIR /FrontEnd

ENTRYPOINT [ "dotnet", "run" ] 

编辑

这是我的新 Dockerfile 似乎在控制台中工作,但在 Chrome 中没有。

这是我在控制台中运行的命令: docker run --rm name_proj:latest

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /FrontEnd
COPY *.csproj ./
COPY package.json ./
RUN dotnet restore
RUN apt-get update -yq && apt-get upgrade -yq && apt-get install -yq curl git nano
RUN curl -sL https://deb.nodesource.com/setup_11.x | bash - && apt-get install -yq nodejs build-essential
RUN npm install -g npm
RUN npm install
COPY . ./

#FROM microsoft/dotnet:2.1-aspnetcore-runtime

ENTRYPOINT [ "dotnet", "run" ]

登录控制台:

当我打开 localhost:5001 时不起作用

【问题讨论】:

    标签: node.js docker .net-core


    【解决方案1】:

    您只能通过FROM 从一个容器继承。每次使用 FROM 时,您都会切换到使用新容器作为基础。当你这样做

    FROM microsoft/dotnet:2.1-sdk
    FROM node:11
    

    效果和刚才一样

    FROM node:11
    

    node contianer 中,没有安装 .NET Core。

    如果您想要一个同时提供dotnetnpm 命令的容器,您需要自己构建它。这是关于 stackoverflow 的答案,它向您展示了如何做到这一点:How to integrate 'npm install' into ASP.NET CORE 2.1 Docker build。简短的版本是您从一个容器(可能是FROM microsoft/dotnet:2.1-sdk)开始,然后手动将node 包安装到其中。

    【讨论】:

    • 谢谢你,我更新了帖子,如果你能看到它会是个好主意
    • 需要将容器内的网口(5000、5001)连接到容器外。如果您使用的是命令行,那就是在您的 docker run 调用中添加 -p 5000:5000。这将容器内部的端口号 5000 映射到容器外部的端口 5000(又名 localhost)。然后您应该可以通过浏览器访问它。
    • 不使用 docker run --rm -p 5000:5000 name_proj:latest http 5000 说 EMPTY_RESPONSE 和 https 5001 说 ERR_CONNECTION_REFUSED...
    • 这听起来像是您的应用程序中的一个错误。尝试使用一个空的 asp.net 核心项目来确定。
    • 同样的错误,使用新的 mvc proj,我尝试使用 --expose 但没有任何反应
    猜你喜欢
    • 2020-01-16
    • 2015-02-21
    • 2019-04-01
    • 2015-08-19
    • 2019-11-13
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多