部署 Asp.Net Core 应用到 Docker

.NET
357
0
0
2022-03-29
标签   ASP.NET

前言:

今天不说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 lvm21

部署 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

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 <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 .

部署 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