You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

容器化ASP.NET应用时遇/bin/sh不存在错误,寻求解决方案

解决ASP.NET容器启动时"/bin/sh: no such file or directory"错误

问题原因

你使用的ubuntu/dotnet-aspnet:7.0-22.10_edge镜像属于非官方维护的特殊版本,可能是无shell的最小化镜像或存在环境缺失,导致容器启动时无法找到/bin/sh,进而触发启动失败。

解决方案

1. 替换为官方Microsoft ASP.NET基础镜像

将Dockerfile中的基础镜像替换为微软官方维护的ASP.NET 7.0镜像,该镜像包含完整的运行环境和必要的shell支持:

修改后的Dockerfile:

# 使用官方ASP.NET 7.0运行时镜像
FROM mcr.microsoft.com/dotnet/aspnet:7.0

COPY . .

RUN dotnet publish "./RaspCronJobServer/RaspCronJobServer.csproj" -o /application

WORKDIR /application

EXPOSE 5000

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

2. (可选)优化Dockerfile构建效率

为利用Docker层缓存减少重复构建时间,可调整步骤顺序,优先处理依赖安装:

FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app
EXPOSE 5000

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY ["RaspCronJobServer/RaspCronJobServer.csproj", "RaspCronJobServer/"]
RUN dotnet restore "./RaspCronJobServer/RaspCronJobServer.csproj"
COPY . .
WORKDIR "/src/RaspCronJobServer"
RUN dotnet build "./RaspCronJobServer.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "./RaspCronJobServer.csproj" -c Release -o /app/publish /p:UseAppHost=false

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

验证步骤

  1. 重新执行构建命令:
docker build -t vendor/name:1.0 .
  1. 启动容器测试:
docker run -p 5000:5000 vendor/name:1.0

内容的提问来源于stack exchange,提问作者user5405648

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 23:30:15