CentOS8 .NET5 WebApi Docker下发布流程记录!

阅读本文的前提是您已经可以在不使用Docker的情况下在CentOS下发布.NET webapi。

本篇文章不讲解基本的.NET Core WebApi 在Linux下发布遇到的一些常见问题。

如果不具备上述条件请先阅读上一篇文章 CentOS8 下发布 .NET5 WebApi 流程记录!

 

 

环境准备:

腾讯云 CentOS8.2

Vistual Studio 2019

XShell 6

 

 

1.创建ASP.NET Core Web API项。项目名称叫 testdocker!去掉配置 HTTPS的勾,并勾选启用 Docker.

 

 

 

 

 

2.修改DockerFile文件内容,并将DockerFile属性设置为始终复制。

 

修改前

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

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["TestDocker/TestDocker.csproj", "TestDocker/"]
RUN dotnet restore "TestDocker/TestDocker.csproj"
COPY . .
WORKDIR "/src/TestDocker"
RUN dotnet build "TestDocker.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "TestDocker.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "TestDocker.dll"]

 

修改后

#基于 microsoft/dotnet:5.0.0-core 来构建我们的镜像
FROM mcr.microsoft.com/dotnet/sdk:5.0

#创建项目在docker容器内的工作目录,容器启动时执行的命令会在该目录下执行
#WORKDIR 命令为后续的RUN、CMD、COPY、ADD等命令配置工作目录。设置后,接下来的COPY和ADD命令中的相对路径就是相对于WORKDIR指定的路径
WORKDIR /app
#EXPOSE 是声明运行时容器提供服务端口,将在docker run -p <宿主端口>:<容器端口>时用到
EXPOSE 5000
#点并不是指本机目录下的文件,而是 docker引擎中展开的构建上下文中的文件
#即当前执行docker build构建时的所在目录,即在目录testah目录
#将当前上文下的文件复制到容器内的当前目录下
COPY . .
#使用dotnet webapi.dll来运行应用程序
CMD ["dotnet", "TestDocker.dll"]

 

 

3.为appsettings.json增加一行代码 "urls": "http://*:5000",

 

 

4.修改Startup类下面的Configure函数,将以下两句代码移动到if判断外面,否则发布后看不到Swagger UI界面

 

 

5.调试切换到TestDocker确定项目能正常运行

 

 

 

6.发布项目

 

 

 

7.压缩步骤5发布的文件夹为ZIP文件。

 

8.XShell连接CentOS服务器,执行yum update命令,先更新系统!

 

 

9.更新完成后执行 sudo dnf install aspnetcore-runtime-5.0 安装.NET5 Runtime! (此步骤不是必须,因为Dockerfile已经显示声明了 FROM mcr.microsoft.com/dotnet/sdk:5.0 )

相关资料:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos

 

10.接下来安装docker;,执行命令   curl -sSL https://get.daocloud.io/docker | sh

如果安装太慢可以采用国内源安装,方法参考帖子:https://blog.csdn.net/weixin_39806100/article/details/105925731

相关资料:https://www.runoob.com/docker/centos-docker-install.html

 

 

11.Docker安装完成后执行命令 service docker start 启动Docker服务。执行命令 service docker status 查看Docker状态。看到running表示启动成功了。

相关资料:https://www.cnblogs.com/ityouknow/p/8520296.html

 

12.把步骤6的压缩包上传到 /home 目录下并解压!

 

 

 

 

13.进入webapi目录下,执行命令  【docker build -t testdocker .】来构建docker镜像,之后使用docker images就能看到我们构建成功地镜像

 

docker常用命令

#启动docker
service docker start

#docker所有的命令都可以在后面加上 --help查看指令帮助
比如:
docker --help
docker ps --help
#查询docker版本 docker version #查看docker状态 service docker status (start, stop, restart,
try-restart, reload, force-reload, status) #查看所有正在运行的容器 docker ps -a #删除docker容器 docker rmi 容器ID #查看docker镜像 docker images #查看docker信息 docker info #删除docker镜像 docker rmi 镜像ID #启动指定容器 docker start container_name/container_id #停止指定容器 docker stop container_name/container_id #重启指定容器 docker restart container_name/container_id #附加指定容器 docker attach container_name/container_id

 

14.执行命令 docker run -p 5000:5000 testdocker 将刚才构建地镜像运行起来。然后访问url:http://119.28.135.102:5000/swagger/index.html 可以看到我们的接口部署成功了!

 

 

 

 

posted @ 2021-07-22 11:10  凉游浅笔深画眉  阅读(239)  评论(0编辑  收藏  举报