.Net部署Docker-v指令使用详解
记录Docker的-v指令使用 前言 之前接触Docker,主要是为了解决.NET项目的部署问题——具体来说,是部署打包编译后的产物。当时用的Dockerfile大致长这样: FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base WORKDIR /app
记录Docker的-v指令使用
前言
之前接触Docker,主要是为了解决.NET项目的部署问题——具体来说,是部署打包编译后的产物。当时用的Dockerfile大致长这样:
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base WORKDIR /app EXPOSE 5031 EXPOSE 7031 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build WORKDIR /src COPY . . ENTRYPOINT ["dotnet", "Personalblog.dll"]
接下来便是常规操作:构建镜像、创建容器。用的命令也很直接:
docker build -t app . docker run -d -p 80:80 --name app app
问题出现
如果只是按上面的流程走,项目确实能跑起来。但很快就会发现一个麻烦:一旦项目代码有更新,就得先把容器删掉,接着再把镜像也删了,才能重新部署。如果只删除容器而不动镜像,你会发现,新创建的容器里跑的依然是老代码。
为什么会这样?
根本原因在于没有主动挂载目录。Docker默认会用一个随机生成的名称来挂载一个数据卷。如果不删除镜像,这个默认的卷就会一直存在,导致无论创建多少个新容器,它们读取的都是同一份旧数据。
问题解决
解决办法其实很简单,用上 -v 指令就能搞定。
具体命令调整如下:
docker run -d -p 80:80 -v 项目路径:/src --name app app
这样部署后,容器内的 /src 目录就会直接指向你本地的项目路径。之后项目再有更新,只需删除旧容器,然后用上面的命令重新创建一个新的就行,镜像完全无需动。
需要注意的是,这个挂载路径 /src 是针对.NET项目Dockerfile里 WORKDIR /src 这个设置来的。其他类型的项目挂载点可能不同。尝试过修改这个路径,但容器启动时似乎会自动生成一个src目录,具体机制还有待深究。如果哪位有更优雅的解决方案,欢迎分享探讨。
扩展
如果想查看一个容器具体的挂载详情,可以用这个命令:docker inspect 容器名。在输出的JSON信息里,找到 Mounts 字段,就能看到完整的挂载源和目标路径了。
Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。
Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。
Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。
PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。
Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等
Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。













