首页 > 编程语言 >将 .net core 程序部署到 docker

将 .net core 程序部署到 docker

时间:2023-02-18 12:12:56浏览次数:55  
标签:Zocono core 容器 WMS build WebApi net docker

发布项目

  1. 在 VS 里面选择你需要发布的程序右击添加 docke 支持,选择要发布的OS目标是 Linux 。然后会生成一个 Dockerfile 文件
  2. 编辑 Dockerfile 文件注释掉一部分,然后添加 COPY . . ,这边注意俩个 . 之间有个空格
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
   
#Depending on the operating system of the host machines(s) that will build or run the containers, the image specified in the FROM statement may need to be changed.
#For more information, please see https://aka.ms/containercompat
   
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

# 将当前 Dockerfile 所在目录下的所有文件复制到容器中的当前工作目录。
COPY . . # 注意这边俩个点之前有个空格,注意这边俩个点之前有个空格第一个 . 表示 Dockerfile 所在目录,第二个 . 表示容器中的当前工作目录,因此该命令会将当前目录下的所有文件复制到容器的当前工作目录。
#FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
#WORKDIR /src
#COPY ["Zocono.WMS.WebApi/Zocono.WMS.WebApi.csproj", "Zocono.WMS.WebApi/"]
#COPY ["Zocono.WMS.Application/Zocono.WMS.Application.csproj", "Zocono.WMS.Application/"]
#COPY ["Zocono.WMS.Domain/Zocono.WMS.Domain.csproj", "Zocono.WMS.Domain/"]
#COPY ["Zocono.WMS.Data/Zocono.WMS.Data.csproj", "Zocono.WMS.Data/"]
#COPY ["Zocono.WMS.Dto/Zocono.WMS.Dto.csproj", "Zocono.WMS.Dto/"]
#RUN dotnet restore "Zocono.WMS.WebApi/Zocono.WMS.WebApi.csproj"
#COPY . .
#WORKDIR "/src/Zocono.WMS.WebApi"
#RUN dotnet build "Zocono.WMS.WebApi.csproj" -c Release -o /app/build
#
#FROM build AS publish
#RUN dotnet publish "Zocono.WMS.WebApi.csproj" -c Release -o /app/publish /p:UseAppHost=false
#
#FROM base AS final
#WORKDIR /app
#COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Zocono.WMS.WebApi.dll"]
  1. 右击发布项目到文件夹,或者在需要发布项目文件夹下面打开 PowerShell 或者 CMD 运行 dotnet publish 命令,默认发布到你程序文件夹下的\bin\Debug\net6.0\publish文件夹

构建镜像

\bin\Debug\net6.0\publish 文件夹或发布好的程序文件夹下打开 PowerShell 运行一下命令进行构建镜像

# 1. 如果文件夹下有 dockerfile 文件:
docker build -t 127.0.0.1:5000/<name>:<tag> . 
# 2. 如果文件夹下没有 dockerfile 文件,运行需要指定 dockerfile 文件
docker build -t 127.0.0.1:5000/<name>:<tag> -f <path> . 
	# 127.0.0.1:5000/ 指定 Docker Registry 的地址(私有仓库地址是什么就改什么)
	# <name> 代表镜像名 
	# <tag> 代表版本标签
	# <path> 代表指定的 dockerfile 文件如:D:\WMS\Dockerfile
	

注意:上面命令的 . 不能遗漏,. 表示当前目录,用于指定要运行的 Docker 镜像所在的目录。

  • -t : 镜像的名字及标签;
  • -f :指定要使用的 Dockerfile 路径;

docker build 详细参数查看:官方文档 - docker build 命令

运行容器

构建完镜像运行

docker run -d -p <ip>:<port>:<dockerfilePort> --name=<containerName> --restart=always  <name>:<tag>
	# <ip> 如果没有指定 ip 默认 localhost
	# <prot> 主机端口
	# <containerPort> 容器端口
	# <containerName> 给容器命名
	# <name> 镜像名 
	# <tag> 版本标签
  • -i:以交互模式运行容器,通常与 -t 同时使用;

  • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;

  • -d:后台运行容器,并返回容器ID;

  • -p:随机端口映射,容器内部端口随机映射到主机的端口;

  • --name:为容器指定一个名称

  • --restart:指定容器在退出后的重启策略。(有以下选项)

    • no:默认策略,容器退出时不重启容器;
    • on-failure:在容器非正常退出时(退出状态非0)才重新启动容器;
    • on-failure:3:在容器非正常退出时重启容器,最多重启3次;
    • always:无论退出状态是如何,都重启容器;
    • unless-stopped:在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器。

docker run 详细参数查看:官方文档 - docker run 命令

如果要修改已有容器请用 docker update 命令。如:

docker update --restart=always 容器ID(或者容器名)

docker update 详细参数选项请看:官方文档 - docker update 命令

标签:Zocono,core,容器,WMS,build,WebApi,net,docker
From: https://www.cnblogs.com/Honesty-is-the-best-policy/p/17132251.html

相关文章

  • ASP.NET Core - 自定义中间件
    上一章讲了请求管道与中间件的基本概念和工作模式,也介绍了ASP.NETCore中内置的中间件,这一章介绍一下如何自定义中间件,这是很常用也很重要的内容,日常工作中很多场景我们......
  • 使用 upgrade-assistant 升级Framework项目到.NET
    只在VS2022有效首先安装扩展包 upgrade-assistant重启后打开netframework项目,并在VS中切换到终端切换到当前项目的文件夹运行升级命令、根据条件进行选择就行......
  • linux报错:-bash: telnet: 未找到命令
    如linux系统下遇到以下情况,是因为缺少该软件包使用命令:yuminstall 命令名称-y 安装即可。例:yuminstalltelnet-y ......
  • 使用Docker启动并运行Flask应用
    (一)拉取Python镜像dockerpullpython#查看当前主机中存在的镜像dockerimages(二)编写flask应用1.创建一个目录mkdirflask_demo#进入目录中cdflask_de......
  • centos下docker中安装kong
    1、初始化docker环境:yuminstall-yepel-releasecurl-fsSLhttps://get.docker.com/|shsystemctldaemon-reloadsystemctlenabledocker.servicesystemctlrestartdoc......
  • 安装Docker容器
    安装docker1、Docker要求CentOS系统的内核版本高于3.10,查看本页面的前提条件来验证你的CentOS版本是否支持Docker。通过uname-r命令查看你当前的内核版本$unam......
  • 在 Linux 中Docker上安装、启用 SQL Server 代理
     一、使用Docker运行SQLServerLinux容器映像https://learn.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-docker?view=sql-server-linux-ver15&piv......
  • 3 .NET Core笔试题
    1.什么是ASP.NETCore?2.ASP.NETCore中AOP的支持有哪些?3.ASP.NETCoreFilter的注册方式有哪些?4.ASP.NETCoreFilter如何支持依赖注入?5.ASP.NETCore如何和读取配......
  • 2 .NET Core笔试题
    1.说说在Linux系统部署ASP.NETCore项目的步骤。2.说说热重载是什么。3.如何理解鉴权和授权两个词4.说说.NET7包含了几大方向的开发?5.如何理解云原生?6.ASP.NETCore应......
  • J1周:ResNet-50算法实战与解析
    本周任务根据本文TensorFlow代码,编写出相应的Pytorch代码了解残差结构是否可以将残差模块融入到C3当中(自由探索)一、知识储备深度残差网络ResNet(deepresidualn......