zoukankan      html  css  js  c++  java
  • 部署 Asp.Net Core 应用到 Docker

    前言:

          今天不说Docker 是啥,容器是啥镜像又是啥(如果这些不知道,请自行学习),今天很单纯的将 .Net Core 应用程序部署到Docker上。

    起因:

      好多同学私信让我写篇能落地的【一步步】将 Asp.Net Core 应用程序部署到Docker上的操作文档。

    一、环境 

    1.1、开发环境

      Win10 + VS2019/VS Code

    1.2、部署环境

      CentOS 8.0 + Docker

    二、部署前准备工作

      2.1、在 CentOS8.0 上安装 Docker

        a)、安装所需的软件包

    yum install -y yum-utils  device-mapper-persistent-data lvm2
    

      

    b)、配置阿里云镜像源

    yum-config-manager --add-repo  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    c)、安装最新版本的Docker Engine-Community 和 containerd.io

     yum install docker-ce docker-ce-cli containerd.io
    

      

         不好意思 ,报错了,既然报错了就解决呗!

          从它的报错信息可以看出,  docker-ce-3:19.03.13-3.el7.x86_64 这个家伙需要的 containerd.io 的版本要大于等于 1.2.2_3,目前我们本地的仓库没有这个版本,那我们就单独将它安装。

          1)、单独安装containerd.io       

    dnf install https://download.docker.com/linux/centos/8/x86_64/stable/Packages/containerd.io-1.3.7-3.1.el8.x86_64.rpm
    

      

          2)、安装剩下的 Docker-ce和Docker-ce-cli

    dnf install docker-ce docker-ce-cli
    

      

         e)、验证是否安装成功

    docker --version
    

      

      f)、设置开机自启,启动Docker  

    systemctl enable docker
    systemctl start docker
    

      

     

        g)、配置Docker 加速器 【阿里】

          1)vim /etc/docker/daemon.json

             这里的地址我的,可以修改成你们自己的。

          2)、使其配置生效   

    systemctl daemon-reload
    systemctl restart docker
    

      

       2.2、编写Dockerfile并制作镜像(image)

    根据Dockerfile制作镜像有两种方式:

        •   一种是在Win10上根据Dockerfile制作镜像,并将镜像发布到镜像仓库中或者将镜像上传到CentOS 中
        •   还有一种就是将发布后的文件复制到CentOS 上,并根据Dockerfile 制作镜像。我这里采用的第二种。(我的开发机器上【Win10】没有安装Docker)
    FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
    RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    RUN echo 'Asia/Shanghai' >/etc/timezone
    ENV LANG C.UTF-8
    MAINTAINER Aju <10225608xx@qq.com>
    LABEL version="1.0"
    WORKDIR /app
    COPY . .
    EXPOSE 80
    EXPOSE 443
    ENTRYPOINT ["dotnet", " WebApi.dll"]

          a)、将应用程序发布后上传到【/var/www/api/】,并将编写好的 Dockerfile 也上传到【/var/www/api/】

              肯定有人问,可以将Dockerfile上传到别目录下吗?答案是可以

          b)、制作镜像

              1)、cd /var/www/api/

              2)、制作镜像

                docker build -t aju.webapi .

          c)、使用 docker images 可以看到我们刚创建的镜像

       2.3、创建并启动容器【后台运行】

            1)、使用上一步制作的镜像来创建并运行一个容器

            2)、docker ps 

            3)、OK了,我们可以在访问了

     3、总结

      Docker 其实也没那么难,动手操作才是最重要的【跟着本文章,一步步肯定能跑起来,如有问题可留意或私信】。至于基础内容请自信学习【https://docs.docker.com/get-started/】,

      加油,噢力给!

  • 相关阅读:
    记一个微信公众号个性化菜单的坑
    初学c# -- 学习笔记(六) winfrom组件圆角
    Swift中添加标记(MARK)和警告(TODO FIXME)
    iOS Xib布局某些控件显示或隐藏<约束的修改>
    [!] Unable to satisfy the following requirements:
    React Native使用NetInfo对当前系统网络的判断
    iOS自定义下拉列表
    [!] The version of CocoaPods used to generate the lockfile (1.4.0.beta.1) is higher than the version of the current executable (1.3.0.beta.1). Incompatibility issues may arise.
    iOS实现TextField光标居中
    iOS优秀第三方框架
  • 原文地址:https://www.cnblogs.com/haoxiaozhang/p/13985681.html
Copyright © 2011-2022 走看看