VS2019启用Docker支持的坑
- 使用vs2019创建ASP.Net Core Web应用程序:
- 右侧高级选项中有一项启用Docker支持,勾选后vs会自动帮我们创建Dockerfile:
- 看一下Dockerfile的内容:
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
RUN dotnet restore "WebApplication1/WebApplication1.csproj"
COPY . .
WORKDIR "/src/WebApplication1"
RUN dotnet build "WebApplication1.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "WebApplication1.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]
乍一看好像很完美。。。
- 下面用docker build一下,通常的做法是:
docker build -t mywebapp .
然后进行到第6步就报错了:COPY failed: stat /var/lib/docker/tmp/docker-builder893785636/WebApplication1/WebApplication1.csproj: no such file or directory
没有这样的文件或目录,仔细一看COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]确实不对,WebApplication1这级目录是多余的。
然后我试着修改Dockerfile文件,最后怎么改都没能成功。。。
解决方案一:
- 把生成的Dockerfile文件移到上一级目录,在上一级目录执行
docker build -t mywebapp .
就可以了。
解决方案二:
- 在上一级目录执行docker build并使用-f参数指定Dockerfile文件位置:
docker build -t mywebapp1 -f ./WebApplication1/Dockerfile .
解决方案三:
- 直接使用vs2019来启动,将项目设置为Docker启动:
Ctrl+F5即可启动:
但是由于网络等原因,可能又会遇到其他问题。。。
——本文使用【Typora】+【EasyBlogImageForTypora】编辑
欢迎关注我的公众号,一起学习。
如果本文对您有所帮助,您可以点击右下方的【推荐】按钮支持一下;文中如有不妥之处,还望指正,非常感谢!!!

作者:xhznl
出处:http://www.cnblogs.com/xhznl/
文章可以转载,但请注明出处
标签:
ASP.NET Core
, Docker
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端