zoukankan      html  css  js  c++  java
  • CentOS8 .NET5 WebApi Docker下发布流程记录!

    阅读本文的前提是您已经可以在不使用Docker的情况下在CentOS下发布.NET webapi。

    本篇文章不讲解基本的.NET Core WebApi 在Linux下发布遇到的一些常见问题。

    如果不具备上述条件请先阅读上一篇文章 CentOS8 下发布 .NET5 WebApi 流程记录!

    环境准备:

    腾讯云 CentOS8.2

    Vistual Studio 2019

    XShell 6

    1.创建ASP.NET Core Web API项。项目名称叫 testdocker!去掉配置 HTTPS的勾,并勾选启用 Docker.

    2.修改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/aspnet:5.0 AS base
    WORKDIR /app
    EXPOSE 80
    
    FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
    WORKDIR /src
    COPY ["TestDocker/TestDocker.csproj", "TestDocker/"]
    RUN dotnet restore "TestDocker/TestDocker.csproj"
    COPY . .
    WORKDIR "/src/TestDocker"
    RUN dotnet build "TestDocker.csproj" -c Release -o /app/build
    
    FROM build AS publish
    RUN dotnet publish "TestDocker.csproj" -c Release -o /app/publish
    
    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app/publish .
    ENTRYPOINT ["dotnet", "TestDocker.dll"]

    修改后

    #基于 microsoft/dotnet:5.0.0-core 来构建我们的镜像
    FROM mcr.microsoft.com/dotnet/sdk:5.0
    
    #创建项目在docker容器内的工作目录,容器启动时执行的命令会在该目录下执行
    #WORKDIR 命令为后续的RUN、CMD、COPY、ADD等命令配置工作目录。设置后,接下来的COPY和ADD命令中的相对路径就是相对于WORKDIR指定的路径
    WORKDIR /app
    #EXPOSE 是声明运行时容器提供服务端口,将在docker run -p <宿主端口>:<容器端口>时用到
    EXPOSE 5000
    #点并不是指本机目录下的文件,而是 docker引擎中展开的构建上下文中的文件
    #即当前执行docker build构建时的所在目录,即在目录testah目录
    #将当前上文下的文件复制到容器内的当前目录下
    COPY . .
    #使用dotnet webapi.dll来运行应用程序
    CMD ["dotnet", "TestDocker.dll"]

    3.为appsettings.json增加一行代码 "urls": "http://*:5000",

    4.修改Startup类下面的Configure函数,将以下两句代码移动到if判断外面,否则发布后看不到Swagger UI界面

    5.调试切换到TestDocker确定项目能正常运行

    6.发布项目

    7.压缩步骤5发布的文件夹为ZIP文件。

    8.XShell连接CentOS服务器,执行yum update命令,先更新系统!

    9.更新完成后执行 sudo dnf install aspnetcore-runtime-5.0 安装.NET5 Runtime! (此步骤不是必须,因为Dockerfile已经显示声明了 FROM mcr.microsoft.com/dotnet/sdk:5.0 )

    相关资料:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos

    10.接下来安装docker;,执行命令   curl -sSL https://get.daocloud.io/docker | sh

    如果安装太慢可以采用国内源安装,方法参考帖子:https://blog.csdn.net/weixin_39806100/article/details/105925731

    相关资料:https://www.runoob.com/docker/centos-docker-install.html

    11.Docker安装完成后执行命令 service docker start 启动Docker服务。执行命令 service docker status 查看Docker状态。看到running表示启动成功了。

    相关资料:https://www.cnblogs.com/ityouknow/p/8520296.html

    12.把步骤6的压缩包上传到 /home 目录下并解压!

    13.进入webapi目录下,执行命令  【docker build -t testdocker .】来构建docker镜像,之后使用docker images就能看到我们构建成功地镜像

    docker常用命令

    #启动docker
    service docker start
    
    #docker所有的命令都可以在后面加上 --help查看指令帮助
    比如:
    docker --help
    docker ps --help
    #查询docker版本 docker version #查看docker状态 service docker status (start, stop, restart,
    try-restart, reload, force-reload, status) #查看所有正在运行的容器 docker ps -a #删除docker容器 docker rmi 容器ID #查看docker镜像 docker images #查看docker信息 docker info #删除docker镜像 docker rmi 镜像ID #启动指定容器 docker start container_name/container_id #停止指定容器 docker stop container_name/container_id #重启指定容器 docker restart container_name/container_id #附加指定容器 docker attach container_name/container_id

    14.执行命令 docker run -p 5000:5000 testdocker 将刚才构建地镜像运行起来。然后访问url:http://119.28.135.102:5000/swagger/index.html 可以看到我们的接口部署成功了!

  • 相关阅读:
    对实时的视屏流进行处理
    opencv读取并播放avi视屏
    opencv中读取显示图像
    为什么既要有IP地址还要有MAC地址
    继承中构造、析构 与 拷贝构造、赋值中的调用区别
    拷贝构造函数和赋值符函数——转
    inline修饰虚函数的问题
    菱形继承产生的问题及解决
    迭代器模式
    备忘录模式
  • 原文地址:https://www.cnblogs.com/fuhua/p/15043177.html
Copyright © 2011-2022 走看看