• 如何将asp.net core3.1项目部署到centos docker


    从0开始新建一个 asp.netcore webmvc项目,并将项目发布到centos系统中的docker容器里,实现方法如下:

    1.新建一个.netcore web mvc项目

    用vs2019新建一个名称为demo1.MvcOne 的.netcore web mvc项目

     点击 【下一步】 按钮

     点击 【创建】按钮

    选择WEB应用程序(模型视图控制器),点击【创建】按钮

     创建后的目录结构

     打开View/Home/Index.cshtml文件,编辑一点自定义内容

    先在本地测调试 一下,看能否跑起来,将  demo1.MvcOne设置为启动项目,按F5启动。

     2. 发布demo1.MvcOne项目

    将demo1.MvcOne发布到本地的一个文件夹。

    点击【创建配置文件】按钮

     点击【发布】按钮,发布完成后在本地发布的文件夹中添加一个Dockerfile的文本文件,此文件没有后缀

      

    编辑Dockerfile文件的内容,不要用  vs code或vs2019自动生成的Dockerfile,不好用。

    编辑Dockerfile文件的内容为:

    #添加.nencore3.1基础镜像
    FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
    #容器工作目录
    WORKDIR /app
    
    #指定项webapi或mvc站点的内部启动端口,默认是80
    ENV ASPNETCORE_URLS http://+:50001
    
    #暴露docker容器端口
    EXPOSE 50001
    
    #拷贝发布目录下的所有文件到容器的工作根目录
    #COPY . . (这样写也可以)
    COPY ./ ./
    
    #容器入口点
    ENTRYPOINT ["dotnet", "demo1.MvcOne.dll"]

    3. 将发布好的文件,全部上传到centos

    将发布好的本地文件夹中的所有文件,指 G:codepublishdemo1demo1.MvcOne 目录里的所有文件,全部上传到centos的某个文件夹里面,可以用gitLab上传,或者用xftp上传。

    我这里用xftp上传来演示:

     

        4. 在centos里创建docker本地镜像

     创建docker镜像的前提条件,先要在centos上安装docker-ce,安装docker-ce的步骤请参考 centos7.6安装docker  , 

    (1) 下载.netcore 3.1基础镜像

     下载基础镜像 mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim ,.netcore3.1需要用到此基础镜像。此镜像比较大,下载需要较长时间。

     docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim

    如果用源码来构建镜像,还需要下载 mcr.microsoft.com/dotnet/core/sdk:3.1-buster  镜像,用源码构建镜像的Dockerfile需要另外配置,本篇不详解。

    docker pull mcr.microsoft.com/dotnet/core/sdk:3.1-buster

    (2) 构建本地镜像

     进入 centos的demo1.MvcOne项目发布文件夹(比如 /projectpublish/demo1.MvcOne),使用docker build命令构建本地镜像。

    docker build -t demo1.mvcone .

    demo1.mvcone表示镜像名,镜像名必须小写,注意后面个点号(.),并且点号前面有个空格,表示构建镜像到当前目录。

    构建镜像成功出现以下信息:

     用docker images 命令查看镜像列表

      

    5.  创建容器

    容器是镜像的实例,创建demo1.mvcone镜像的容器

    docker run -d --name my.demo1.mvcone -p 8001:50001 -v /appdata/mvcone demo1.mvcone

    -d 后台运行容器

    --name 容器名

    -p 8001:50001  冒号前面的8001表示对象访问的端口,冒号后面的50001表示容器内部端口。

    -v 为容器设置卷路径,可随意指定卷路径,这里是在/appdata/mveone 目录下。

    最后面的demo1.mvcone 表示镜像名

    查看运行中的容器:

    docker ps

     若容器启动成功,访问my.demo1.mvcone站点的效果:

    6. 如何将本地镜像上传到docker hub

    通常在生产环境,开发的项目需要集群部署,为了让其它docker服务能快速的拉取镜像,需要将本地镜像上传到dokcer仓库,docker仓库分为官方公有仓库docker hub及私有仓库harbar,使用私有仓库harbor需要搭建harbor环境,本文不讲述,本文以上传到docker hub为例。

    (1)  添加镜像Tag

     使用Tag标记本地像镜,将本地镜像 demo1.mvcone 标记为 yyee/demo1.mvcone , yyee是我在dockerhub的帐号名,也是默认的仓库名。

    标记前后对比:

    (2) 登录docker hub

    docker login

    然后输入在docker hub注册的用户名和密码,如果还没有注册dokcer hub帐号,请先注册docker hub帐号,注册URL: https://hub.docker.com/

    (3) 上传镜像

    登录成功后,使用docker push命令上传本地镜像到docker hub仓库

    dokcer push yyee/demo1.mvcone

    上传前后对比:

  • 相关阅读:
    复(学)习化学时突然的一个 idea
    [BZOJ3032]七夕祭
    [BZOJ3781]小B的询问
    [BZOJ4103][Thu Summer Camp 2015]异或运算
    [BZOJ4817][Sdoi2017]树点涂色
    [BZOJ2506]calc
    [BZOJ1283]序列
    win 解除鼠标右键关联
    linux 常用shell命令之wc
    shell cat 合并文件,合并数据库sql文件
  • 原文地址:https://www.cnblogs.com/yyee/p/12950422.html
Copyright © 2020-2023  润新知