部署 Asp.Net Core 应用到 Docker

  • A+
所属分类:.NET技术
摘要

前言:      今天不说Docker 是啥,容器是啥镜像又是啥(如果这些不知道,请自行学习),今天很单纯的将 .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 

  部署 Asp.Net Core 应用到 Docker

b)、配置阿里云镜像源

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

部署 Asp.Net Core 应用到 Docker

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

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

  部署 Asp.Net Core 应用到 Docker

 

     不好意思 部署 Asp.Net Core 应用到 Docker,报错了,既然报错了就解决呗!

      从它的报错信息可以看出,  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 

  部署 Asp.Net Core 应用到 Docker

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

dnf install docker-ce docker-ce-cli 

  部署 Asp.Net Core 应用到 Docker

     e)、验证是否安装成功

docker --version 

  部署 Asp.Net Core 应用到 Docker

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

systemctl enable docker systemctl start docker 

  部署 Asp.Net Core 应用到 Docker

 部署 Asp.Net Core 应用到 Docker

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

      1)vim /etc/docker/daemon.json

部署 Asp.Net Core 应用到 Docker

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

      2)、使其配置生效   

systemctl daemon-reload systemctl restart docker 

  部署 Asp.Net Core 应用到 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 <[email protected]> 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 .

部署 Asp.Net Core 应用到 Docker

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

部署 Asp.Net Core 应用到 Docker

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

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

部署 Asp.Net Core 应用到 Docker

        2)、docker ps 

部署 Asp.Net Core 应用到 Docker

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

部署 Asp.Net Core 应用到 Docker

 

 

 3、总结

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

  加油,噢力给!部署 Asp.Net Core 应用到 Docker