• 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 可以看到我们的接口部署成功了!

  • 相关阅读:
    了解 NoSQL 的必读资料
    关于什么时候用assert(断言)的思考
    这次见到了一些大侠
    NetBeans 时事通讯(刊号 # 87 Jan 12, 2010)
    动态链接库dll,静态链接库lib, 导入库lib
    新女性十得 写得了代码,查得出异常
    记录系统乱谈
    新女性十得 写得了代码,查得出异常
    fullpage.js禁止滚动
    RunningMapReduceExampleTFIDF hadoopclusternet This document describes how to run the TFIDF MapReduce example against ascii books. This project is for those who wants to experiment hadoop as a skunkworks in a small cluster (110 nodes) Google Pro
  • 原文地址:https://www.cnblogs.com/fuhua/p/15043177.html
Copyright © 2020-2023  润新知