.NET Framework Web项目Dockerfile构建报错:未知指令NEW-WEBSITE
解决Dockerfile中NEW-WEBSITE指令解析错误
问题描述
为.NET Framework Web项目构建Docker镜像时,触发以下解析错误:
Dockerfile parse error line 20: unknown instruction: NEW-WEBSITE
对应的出错Dockerfile片段:
RUN Remove-Website -Name 'Default Web Site';` New-Website -Name 'web-app' -Port 80 -PhysicalPath $env:APP_ROOT;` New-WebApplication -Name 'app' -Site 'web-app' -PhysicalPath $env:APP_ROOT`
错误原因
Docker误将NEW-WEBSITE识别为未知的Docker指令,而非PowerShell命令的一部分,核心问题是RUN指令的换行续行格式错误:
- 反引号`后存在空格或多余换行,导致Docker无法识别这是PowerShell的续行符
- 最后一行命令末尾无需添加反引号
修正后的完整Dockerfile
FROM mcr.microsoft.com/dotnet/framework:4.8-sdk As builder WORKDIR D:\src COPY *.sln . COPY Internal.Api.csproj .\Internal.Api\ RUN nuget restore COPY . D:\src RUN msbuild Internal.Api.csproj /p:OutputPath=d:\out /p:Configuration=Release FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019 SHELL ["powershell", "-Command", "$ErrorActionPreference='Stop';"] ENV APP_ROOT=D:\web-app WORKDIR ${APP_ROOT} RUN Remove-Website -Name 'Default Web Site'; ` New-Website -Name 'web-app' -Port 80 -PhysicalPath $env:APP_ROOT; ` New-WebApplication -Name 'app' -Site 'web-app' -PhysicalPath $env:APP_ROOT COPY --from=builder D:\out\-PublishedWebsites\Internal.Api .
修改说明
- 确保每个反引号`前有空格,且反引号是该行最后一个字符(无后续空格或换行)
- 删除最后一行命令末尾的多余反引号
- 保留SHELL指令配置的PowerShell执行环境,保证所有命令在同一会话中运行
内容的提问来源于stack exchange,提问作者DevSay
相关产品推荐
相关产品推荐

