阅读本文的前提是您已经可以在不使用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 可以看到我们的接口部署成功了!