欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Linux系统Docker 部署 ASP.NET Core应用的流程分析

程序员文章站 2022-03-26 15:48:52
一、系统环境1、腾讯云轻量应用服务器centos7.6二、操作流程及途中遇到的问题1、ssh方式远程linuxssh @

一、系统环境

1、腾讯云轻量应用服务器centos7.6

二、操作流程及途中遇到的问题

1、ssh方式远程linux

ssh <username>@<ip address or domain name>

如果遇到下图问题:

Linux系统Docker 部署 ASP.NET Core应用的流程分析

出现这个问题的原因:known_hosts是记录远程主机的公钥的文件,之前重装个系统,而保存的公钥还是未重装系统的系统公钥,在ssh链接的时候首先会验证公钥,如果公钥不对,那么就会报错
解决方法:使用shh-keygen 命令ssh-keygen -r ip,执行完毕出现下图:

Linux系统Docker 部署 ASP.NET Core应用的流程分析

然后重新使用ssh方式远程linux:

Linux系统Docker 部署 ASP.NET Core应用的流程分析
Linux系统Docker 部署 ASP.NET Core应用的流程分析

2、更新系统

sudo yum update

3、安装git

sudo yum -y install git

4、安装nginx,启用和启动服务:

sudo yum install nginx
sudo systemctl enable nginx
sudo systemctl start nginx

5、安装dotnet sdk

每台计算机只需要执行一次此操作。

sudo rpm -uvh
sudo yum install dotnet-sdk-5.0

6、安装docker环境

1)安装docker源:

首先,我们可以先执行下卸载命令,如果你之前安装过,或者系统自带了,需要卸载干净:

sudo yum remove docker-ce

然后我们就可以安装指定的源了,有官方版本和阿里云版本,我这里尝试使用阿里云版本的吧,听说会快一些。
step 1: 安装必要的一些系统工具

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

step 2: 添加软件源信息

sudo yum-config-manager --add-repo

step 3: 更新并安装docker-ce

sudo yum makecache fast (可选)
sudo yum -y install docker-ce

step 4: 开启docker服务

sudo service docker start

设置docker开机启动

systemctl enable docker

启动docker

systemctl start docker

查看版本

docker --version

docker常用命令

查看所有镜像 docker images
删除一个imageid的镜像

docker rmi [imageid]

删除所有镜像

sudo docker rmi $(docker images -q)

查看所有容器运行状态

docker ps -a

删除一个containerid的容器(实例)

docker rm [containerid]

删除所有容器

docker rm $(sudo docker ps -a -q)

2)测试hello world

检查docker是否可以正常运行(运行hello-world镜像,如果本机没有hello-world镜像,系统会自动拉取hello-world镜像)

docker run hello-world

这个时候,我们可以来检查一下:
当前服务器有哪些镜像:

docker images

那如何查看有哪些容器呢:

docker ps -a

这个就是刚刚我们看到有输出内容的容器:容器id是eb180038a3ce,镜像是hello-world,状态是已退出。

Linux系统Docker 部署 ASP.NET Core应用的流程分析

7、发布自己的镜像

1)添加docker支持:

自定义项目要暴露的接口

Linux系统Docker 部署 ASP.NET Core应用的流程分析

在api层右键添加docker支持,选择linux

Linux系统Docker 部署 ASP.NET Core应用的流程分析

更改dockerfile文件

Linux系统Docker 部署 ASP.NET Core应用的流程分析

from:意思是我们的项目源镜像是哪个;
workdir:镜像的工作目录;
copy:复制文件(将dockerfile所在目录下文件复制到镜像中的工作目录中)
expose:容器要开放的端口(我们用项目的8081端口)
entrypoint:为容器启动后要执行的命令 (这里将执行dotnet docker.core.api.dll命令)

2个脚本文件:docker.core.publish.linux.sh和docker.core.publish.docker.sh

Linux系统Docker 部署 ASP.NET Core应用的流程分析
Linux系统Docker 部署 ASP.NET Core应用的流程分析

dockerfile:然后右键,始终属性、始终复制到输出(bin)目录
接下来把项目发布到github或者gitee:我这里是发布到github然后去码云强制同步项目,从国内clone项目速度更快

2)发布

我们在服务器用git将代码pull下来,然后执行发布命令,我用一个批处理文件,直接一键生成(主要是防止漏掉文件):

Linux系统Docker 部署 ASP.NET Core应用的流程分析

执行发布命令:

Linux系统Docker 部署 ASP.NET Core应用的流程分析

就可以看到生成好的发布文件夹publishfiles。
接下来就是docker 编译镜像了。

3)创建镜像

进入到我们的发布文件夹publishfiles文件夹下,我们测试一下这个文件是否正常:

dotnet docker.core.api.dll

Linux系统Docker 部署 ASP.NET Core应用的流程分析

没问题后,开始build了,还是在当前文件夹下(记得那个点):

docker build -t lenceas/apkimg .

Linux系统Docker 部署 ASP.NET Core应用的流程分析

其中lenceas/apkimg是我们的镜像名。
因为我们的dockerfile是五步,所以这里也正好是5个step。
然后查看机器上的镜像:

Linux系统Docker 部署 ASP.NET Core应用的流程分析

这里多了两个镜像,一个是我们的镜像id为48252cd5c2d0,大小209m的项目文件,一个是我们dockerfile的源镜像。

4)推送镜像到docker hub仓库

第一步:在docker hub注册账号
第二步:创建仓库

Linux系统Docker 部署 ASP.NET Core应用的流程分析

第三步:服务器镜像推送
先登录账号(这里如果以前登录过,可以先退出再重新登录)

Linux系统Docker 部署 ASP.NET Core应用的流程分析

推送:

docker push lenceas/apkimg:latest

Linux系统Docker 部署 ASP.NET Core应用的流程分析

检查:
我们登录管理后台,查看结果

Linux系统Docker 部署 ASP.NET Core应用的流程分析

可以看到已经成功推送了,这样的话,我们就可以在任何的地方使用我的镜像啦。
现在我们有了镜像,那就可以创建容器了,因为有了容器才能运行。

8、生成并运行容器

1)生成容器

有了镜像,我们来生成一个容器:

docker run -it -p 8081:8081 lenceas/apkimg

Linux系统Docker 部署 ASP.NET Core应用的流程分析

会看到输出内容,如果没有报错的话,就恭喜啦,退出当前进程,查看下有哪些容器:

Linux系统Docker 部署 ASP.NET Core应用的流程分析

这时候可以看到多了一个容器id为e45b93658007,镜像是lenceas/apkimg的容器,不过我们的项目容器是退出状态,需要开启下:

docker start e45b93658007

Linux系统Docker 部署 ASP.NET Core应用的流程分析

状态已经是运行中了,那怎么测试接口是否正常了呢,可以用curl命令:

curl http://localhost:8081/weatherforecast

Linux系统Docker 部署 ASP.NET Core应用的流程分析

如果到了这里,恭喜你,docker部署netcore基本已经搞定了
剩下最后一步了,nginx代理,因为我们的docker已经守护了这个进程,所以我们不需要其他的守护进程的工作。

9、nginx代理服务

修改nginx.conf文件,两种方式:
1.vim 命令
编辑文件:vim xxx
插入开始编辑:i
保存并退出::wq!
2.ftp下载到本地修改
这里具体的配置就不写了,网上可以自己去搜.

接下来就是重启nginx服务,首先可以检测语法错误:

nginx -t

Linux系统Docker 部署 ASP.NET Core应用的流程分析

nginx -s reload

Linux系统Docker 部署 ASP.NET Core应用的流程分析

以上就是linux docker 部署 asp.net core应用的详细内容,更多关于docker 部署 asp.net core应用的资料请关注其它相关文章!