记录.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查看挂载信息。

原文链接:https://www.cnblogs.com/ZYPLJ/archive/2023/04/20/17338637.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:记录.Net部署Docker-v指令使用 - Python技术站

(0)
上一篇 2023年4月22日
下一篇 2023年4月22日

相关文章

  • 在ASP.NET 2.0中操作数据之七十三:用Managed Code创建存储过程和用户自定义函数(上部分)

    在ASP.NET 2.0中操作数据之七十三:用Managed Code创建存储过程和用户自定义函数(上部分) Managed Code是指能够在托管代码环境中运行的代码,与之相对的是Unmanaged Code,需要依赖于操作系统底层的API和COM组件等,而且不受托管代码环境控制,容易引起内存泄漏等问题。本文将介绍如何使用Managed Code创建存储过…

    C# 2023年5月31日
    00
  • C# 线程相关知识总结

    C#线程相关知识总结 在C#语言中,线程是一种轻量级的执行单元,它可以独立执行代码,并与其他线程并发执行。线程可以简化编程过程,提高程序的效率。在本篇文章中,我们将总结C#线程的相关知识。 线程的基本概念 程序和进程的概念 在介绍线程之前,我们需要先了解程序和进程的概念。程序是指可执行文件,是CPU可以直接执行的二进制代码;而进程是指正在运行的程序的一个实例…

    C# 2023年5月15日
    00
  • C# 监控 Windows 文件夹的方法

    C#可以使用FileSystemWatcher类来监控Windows文件夹。FileSystemWatcher类可以监视文件夹中的文件和子文件夹的创建、删除、重命名和修改等操作,并触发相应的事件。本文将提供C#监控Windows文件夹的完整攻略,包括创建FileSystemWatcher对象、设置监控选项、处理事件等。同时,本文还提供两个示例,演示如何使用C…

    C# 2023年5月15日
    00
  • C#多线程学习之Thread、ThreadPool、Task、Parallel四者区别

    C#多线程学习之Thread、ThreadPool、Task、Parallel四者区别 1. 简介 C#是一门支持多线程的语言,它提供了几种不同的方式来实现多线程编程。本文将介绍C#中的Thread、ThreadPool、Task、Parallel四种方式,并解释它们之间的区别。 2. Thread Thread是一个代表执行线程的对象,在C#中使用Thre…

    C# 2023年5月15日
    00
  • 轻松学习C#的密封类

    当你想要将一个类定义为不可继承时,你可以将这个类标记为密封类。C#中的密封类与Java中的final类相似,不允许其他类继承它。 如何定义一个密封类? 在C#中,我们可以通过在类的前面添加 sealed 关键字来定义一个密封类。例如: sealed class MySealedClass { // 类定义 } 密封类的特点 密封类不能被其他类继承。 密封类一…

    C# 2023年5月15日
    00
  • C#结合AForge实现摄像头录像

    C#结合AForge实现摄像头录像攻略 本攻略将详细讲解如何使用C#和AForge库实现摄像头录像功能。 准备工作 在开始编写代码之前,您需要准备以下环境和工具: C#编程环境 AForge.NET库 AForge.NET库简介 AForge.NET是一个开源的计算机视觉和人工智能框架,支持图像处理、视频处理、人脸识别、机器学习等功能。在本文中,我们将使用其…

    C# 2023年6月3日
    00
  • C#文件操作类分享

    C#文件操作类分享 本文将分享C#中常见的文件操作类以及它们的使用方法,帮助开发者更好地处理文件输入输出。 StreamReader类 StreamReader类可以用于读取文本文件中的数据。 读取整个文件 string path = @"C:\data.txt"; using (StreamReader sr = new StreamR…

    C# 2023年5月31日
    00
  • C#中的let字句应用示例

    C#中的let字句应用是指在Linq查询语句中使用let关键字定义一个中间变量,以便在查询语句中多次使用,并提高代码的可读性和性能。 以下是示例说明: 示例一:使用let字句进行分组并计算平均值 假设我们有一组学生数据,包含姓名、班级和分数三个字段,现在我们想要按照班级对学生进行分组,并计算每个班级的平均分。代码示例如下: using System.Linq…

    C# 2023年6月1日
    00
合作推广
合作推广
分享本页
返回顶部