平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“.Net部署Docker-v指令采用”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
记录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
理解这一步时,这样子部署容器之后,镜像中就会将挂载路径指向你的项目路径,这样子每次项目更新只需删除容器,随后重新新建容器即可。
理解这一步时,注意:这是.net项目,挂载路径为/src,其他的项目还没了解,我试着改过这个挂载路径,但是不太行,新建容器的时候,容器中会自动给你新建一个src目录,如果有解决办法能够评论该篇文章,迫切希望各位大佬解答我的疑惑。
扩展
能够采用docker inspect 镜像名查看挂载路径,找到Mounts查看挂载信息。
到此这篇关于.Net部署Docker-v指令采用 的文章就介绍到这了,更多相关Docker-v指令采用 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多兼容脚本之家!
- docker<容器数据卷-v>对容器内数据持久化详解(备份)
- Docker数据卷挂载命令volume(-v)与mount的采用总结
- Dockerfile 中 VOLUME 与 docker -v 的区别说明
- docker run -v 挂载数据卷异常,容器状态一直是restarting的解决
- Hyper-V下搭建K8S集群安装docker的方法步骤
- 采用docker -v 和 Publish over SSH插件实现war包自动部署到docker的操作步骤
- docker 中的–mount 和-v 参数区别解析