Docker中部署.Net6 webapi

服务器环境:
1.服务器系统 CentOS 7.5 64位
2.Docker版本 20.10.7
应用环境
框架:AspNet 6.0
工具
1.Xftp
2.MobaXterm

1.手动部署

1.将应用程序发布到文件夹 ,应用右键 - 【发布】- 【发布到文件夹】
Docker中部署.Net6 webapi_第1张图片
2.点击【发布】
Docker中部署.Net6 webapi_第2张图片
注意上图圈出的位置,如果按照上述流程来的话理应是没有 Dockerfile 文件的,我这里有是因为我提前准备好的

3.准备Dockerfile文件

在发布目录下新建一个记事本,内容如下,随后保存没有后缀名

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

# 获取aspnet6.0 运行时
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS runtime

# 容器对外暴露的端口,这里的 8090 与你监听的端口一致
EXPOSE 8090
EXPOSE 443
# 指定工作目录
WORKDIR /app
# 将当前目录下所有文件复制到工作目录,注意 . . 中间是有空格的
COPY . .
# 设置环境变量,可设置多个,如urls...
ENV ASPNETCORE_ENVIRONMENT Production
# 声明程序入口
ENTRYPOINT ["dotnet", "PH.Blog.Web.Entry.dll"]

4.上传至服务器

我这里用的是xftp
Docker中部署.Net6 webapi_第3张图片

4.根据 Dockerfile 文件构建镜像

4.1 在服务器上进入刚才上传文件所在的目录 pwd 查看当前目录
在这里插入图片描述

4.2 构建镜像
输入 docker build -t blog.api.image:1.0 . 注意:后面的 . 代表根据当前目录的dockerfile文件构建镜像不能省略
参数解析:
-t:以 名称:标签 格式命名可选标签
如:blog.api.image:1.0,blog.api.image = 名称,1.0 = 标签

运行后如下:
Docker中部署.Net6 webapi_第4张图片
好我们来看下镜像是否创建成功,通过 docker images命令查看所有镜像
在这里插入图片描述
可以看到镜像已经有了,接下来就是通过镜像创建容器并运行。

4.3 创建容器并运行
运行 docker run --name=blog.api.container -d -it -p 8090:8090 blog.api.image
让镜像在一个指定容器中运行,前面是容器名称,后面是镜像名称,-p是指定容器的运行端口与宿主机端口的映射,宿主机端口:容器端口
运行后如下:
在这里插入图片描述
接下来看下容器如预期一样创建并运行,通过 docker ps命令查看正在运行的容器
在这里插入图片描述
ok,可以看到容器已经运行起来了

2.自动部署
部署步骤看起来虽然不多,但如果你的程序出了点小bug,需要频繁部署的话,那也挺要命的,所以为了节约时间我们可以通过编写shell脚本自动去部署就方便很多了。

脚本如下

#!/bin/sh
#定义镜像名称
image="blog.api.image:1.0"
container="blog.api.container"
#停止容器
docker stop ${container}
#删除容器
docker rm ${container}
#删除镜像
docker rmi ${image}
#构建镜像
docker build -t ${image} .
#创建并运行容器
docker run --name=${container} -d -it -p 8090:8090 ${image}

使用方法:服务器上新建一个*.sh的文件,然后写入脚本,通过 sh *.sh运行脚本即可。
注意:千万别在windows系统下创建好脚本然后上传服务器,否则会因为windows与linux文件格式的差异出现问题。当然这个也不是什么大问题,百度一下就能解决,只是说多一事不如少一事。

总结:

步骤
1.将应用程序发布到文件夹
2.创建Dockerfile文件
3.将发布好的文件及Dockerfile文件打包好并上传服务器
4.通过Dockerfile文件构建镜像
5.通过镜像创建容器并运行。

Docker命令:
docker build -t 镜像名:标签 .使用当前目录的Dockerfile构建镜像
docker images查看所有镜像

docker run --name=容器名 -d -it -p 宿主机端口:容器端口 镜像名根据指定镜像创建容器并运行
docker ps查看所有正在运行的容器
docker ps -a查看所有容器,包括非运行状态的
docker stop容器名称或ID 停止某个容器
docker start 容器名称或id启动容器
docker rm 容器id删除容器
docker rmi 镜像名删除镜像,注意:删除镜像前一定要将容器停止并删除
docker logs --tail 镜像名查看镜像日志

你可能感兴趣的:(.Net,Core,docker,.net,java,linux,服务器)