<h1 style="font-size: 32px; font-weight: bold; border-bottom: 2px solid rgb(204, 204, 204); padding: 0px 4px 0px 0px; text-align: left; margin: 0px 0px 10px;">ASP.NET Docker发布(额外内容)</h1><p><span style="list-style: none; margin: 0px; padding: 0px; border: 0px; font-family: "Microsoft YaHei"; white-space: break-spaces; ">工程源码下载:</span><a href="http://www.bilibili996.com/Course?id=32fc85b737374ecdab3af777a0477f1e" target="_blank" title="GPS定位系统VUE版本源码下载" style="list-style: none; text-decoration-line: none; margin: 0px; padding: 0px; border: 0px; font-family: "Microsoft YaHei"; white-space: break-spaces; ">GPS定位系统VUE版本源码下载</a></p><p><br/></p><p>参考博客:</p><p><a href="http://www.bilibili996.com/Course?id=8e44e6b095894476918a9c2e165c84ca" target="_blank" title=".Net API Ubuntu 18.04.6 Docker发布">.Net API Ubuntu 18.04.6 Docker发布</a> </p><p><a href="http://www.bilibili996.com/Course?id=ba194f61f08f489d845738ae7157956d" target="_blank" title="Ubuntu Docker 部署MySQL">Ubuntu Docker 部署MySQL</a> </p><p><br/></p><p>发布流程可以参考上面那两篇博客,发布之前记得先在Docker中创建好数据库镜像, 创建方法可以参考上面连接。</p><p>博主这里同样是采用虚拟机进行演示,正常公司里面发布不会这么麻烦,一般都会有专门的GIT服务器以及发布网站,基本都是自动化的。</p><p>博主这里展示的是手动发布流程。</p><p><br/></p><p><span style="font-style: italic; font-weight: bold; color: rgb(51, 153, 204); line-height: 18px; font-size: 18px;">修改1</span></p><p>发布之前,需要对我们原先的工程做一些小修改。</p><p>修改“WebApplicationApi\Program.cs”文件。</p><pre class="brush:c#;toolbar:false">app.Run();</pre><p>改成<br/></p><pre class="brush:c#;toolbar:false">app.Run("http://*:5000");</pre><p>我们后端的端口设置成5000。<br/></p><p><br/></p><p><span style="font-style: italic; font-weight: bold; color: rgb(51, 153, 204); line-height: 18px; font-size: 18px;">修改2</span></p><p>右键项目,选择“添加”-“Docker支持”。</p><p style="list-style: none; margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; overflow-wrap: break-word; word-break: break-all; font-size: medium; line-height: 1.5em; white-space: break-spaces; font-family: "Microsoft YaHei"; ">选择“Linux”,确定。</p><p style="list-style: none; margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; overflow-wrap: break-word; word-break: break-all; font-size: medium; line-height: 1.5em; white-space: break-spaces; font-family: "Microsoft YaHei"; "><img class="pimg" src="http://www.bilibili996.com/upload/image/e354ac52d1584f9eb480e2e45de58a24.jpg?638586366307703466" title="QQ截图20240807141023.jpg" alt="QQ截图20240807141023.jpg"/></p><p><br/></p><p><span style="font-family: "Microsoft YaHei"; white-space: break-spaces; ">在项目下会生成一个Dockerfile(没有后缀名),修改暴露的端口,内容如下:</span></p><pre class="brush:js;toolbar:false;">#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 5000 2234
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["WebApplicationApi/WebApplicationApi.csproj", "WebApplicationApi/"]
RUN dotnet restore "WebApplicationApi/WebApplicationApi.csproj"
COPY . .
WORKDIR "/src/WebApplicationApi"
RUN dotnet build "WebApplicationApi.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "WebApplicationApi.csproj" -c Release -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplicationApi.dll"]</pre><p><span style="font-family: "Microsoft YaHei"; white-space: break-spaces; "></span><br/></p><p>500端口是API的端口,2234是TCP通讯端口。</p><p><br/></p><p><span style="color: rgb(51, 153, 204); font-size: 18px; font-style: italic; font-weight: 700; text-wrap: wrap;">修改3</span></p><p>执行下面命令,查看容器IP,将IPAddress的IP配置成TCP的启动IP</p><pre class="brush:bash;toolbar:false">docker inspect gpsapi</pre><p><br/></p><p><img class="pimg" src="http://www.bilibili996.com/upload/image/b8be81be4dce45f7af3a2ee51df4a29c.jpg?638588005502602412" title="QQ截图20240809114220.jpg" alt="QQ截图20240809114220.jpg"/></p><p><br/></p><p>记得修改数据库的地址为虚拟机的本地IP。</p><p><img class="pimg" src="http://www.bilibili996.com/upload/image/04e57235dc1847098b669485a257671f.jpg?638588005739193150" title="QQ截图20240809114244.jpg" alt="QQ截图20240809114244.jpg"/></p><p><br/></p><p style="list-style: none; margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; overflow-wrap: break-word; word-break: break-all; font-size: medium; line-height: 1.5em; white-space: break-spaces; font-family: "Microsoft YaHei"; ">将Dockerfile复制到上一级目录(即和解决方案.sln文件同一级目录)下。</p><p style="list-style: none; margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; overflow-wrap: break-word; word-break: break-all; font-size: medium; line-height: 1.5em; white-space: break-spaces; font-family: "Microsoft YaHei"; "><img class="pimg" src="http://www.bilibili996.com/upload/image/4b07147247e3402788b8f269f82ad52e.jpg?638588000062256310" title="QQ截图20240809113317.jpg" alt="QQ截图20240809113317.jpg"/></p><p><br/></p><p style="list-style: none; margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; overflow-wrap: break-word; word-break: break-all; font-size: medium; line-height: 1.5em; white-space: break-spaces; font-family: "Microsoft YaHei"; "><span style="list-style: none; font-style: italic; margin: 0px; padding: 0px; border: 0px; font-weight: bold; color: rgb(51, 153, 204); line-height: 18px; font-size: 18px;">上传至Linux</span></p><p style="list-style: none; margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; overflow-wrap: break-word; word-break: break-all; font-size: medium; line-height: 1.5em; white-space: break-spaces; font-family: "Microsoft YaHei"; ">将整个项目的源码上传至linux,博主因为使用的是虚拟机,所以这里使用挂载目录进行上传,当然你也可以使用FTP工具进行上传。</p><p style="list-style: none; margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; overflow-wrap: break-word; word-break: break-all; font-size: medium; line-height: 1.5em; white-space: break-spaces; font-family: "Microsoft YaHei"; "><img class="pimg" src="http://www.bilibili996.com/upload/image/3bb70110cca245bb8ad33905844490a2.jpg?638586375138176177" title="QQ截图20240807142504.jpg" alt="QQ截图20240807142504.jpg"/></p><p style="list-style: none; margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; overflow-wrap: break-word; word-break: break-all; font-size: medium; line-height: 1.5em; white-space: break-spaces; font-family: "Microsoft YaHei"; "><br/><strong style="list-style: none; margin: 0px; padding: 0px; border: 0px;">Docker部署</strong></p><p style="list-style: none; margin-top: 0px; margin-bottom: 0px; padding: 0px; border: 0px; overflow-wrap: break-word; word-break: break-all; font-size: medium; line-height: 1.5em; white-space: break-spaces; font-family: "Microsoft YaHei"; ">在当前目录下创建docker.sh文件,然后将下面内容复制进去,实现镜像的自动创建</p><pre class="brush:bash;toolbar:false">#!/bin/bash
# 停止容器
docker stop gpsapi
# 删除容器
docker rm gpsapi
# 删除镜像
docker rmi gpsapis
# 重新创建镜像
docker build -t gpsapis .
# 启动容器
docker run -d -p 5000:5000 -p 2234:2234 --name gpsapi gpsapis
# 清理未使用的镜像
echo "y" | docker system prune
# 打印当前镜像
echo -e '----------------------------'
docker images
# 打印当前运行的容器信息
echo -e '----------------------------'
docker ps</pre><p><br/></p><p><img class="pimg" src="http://www.bilibili996.com/upload/image/eded9eaafb89498fbe2cd2147d9d5e97.jpg?638588017882571972" title="QQ截图20240809120258.jpg" alt="QQ截图20240809120258.jpg"/></p><p><span style="font-family: "Microsoft YaHei"; white-space: break-spaces; "><br/></span></p><p><span style="font-family: "Microsoft YaHei"; white-space: break-spaces; ">然后直接运行我们的<span style="font-family: "Microsoft YaHei"; font-size: medium; white-space: break-spaces; ">docker.sh</span></span></p><p><span style="font-family: "Microsoft YaHei"; white-space: break-spaces; ">等之前完之后,打开虚拟机的浏览器,访问:http://127.0.0.1:5000/swagger/index.html</span></p><p><span style="font-family: "Microsoft YaHei"; white-space: break-spaces; "><img class="pimg" src="http://www.bilibili996.com/upload/image/498bb21e6d39494d84b164b54d2544e6.jpg?638588024178390207" title="QQ截图20240809121327.jpg" alt="QQ截图20240809121327.jpg"/></span></p><p><br/></p><p>到这里,后端部分就发布完成了~~</p><p><br/></p>
ASP.NET Docker发布(额外内容) 工程源码下载: GPS定位系统VUE版本源码下载
参考博客:
.Net API Ubuntu 18.04.6 Docker发布
Ubuntu Docker 部署MySQL
发布流程可以参考上面那两篇博客,发布之前记得先在Docker中创建好数据库镜像, 创建方法可以参考上面连接。
博主这里同样是采用虚拟机进行演示,正常公司里面发布不会这么麻烦,一般都会有专门的GIT服务器以及发布网站,基本都是自动化的。
博主这里展示的是手动发布流程。
修改1
发布之前,需要对我们原先的工程做一些小修改。
修改“WebApplicationApi\Program.cs”文件。
app.Run(); 改成
app.Run("http://*:5000"); 我们后端的端口设置成5000。
修改2
右键项目,选择“添加”-“Docker支持”。
选择“Linux”,确定。
在项目下会生成一个Dockerfile(没有后缀名),修改暴露的端口,内容如下:
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 5000 2234
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["WebApplicationApi/WebApplicationApi.csproj", "WebApplicationApi/"]
RUN dotnet restore "WebApplicationApi/WebApplicationApi.csproj"
COPY . .
WORKDIR "/src/WebApplicationApi"
RUN dotnet build "WebApplicationApi.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "WebApplicationApi.csproj" -c Release -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplicationApi.dll"]
500端口是API的端口,2234是TCP通讯端口。
修改3
执行下面命令,查看容器IP,将IPAddress的IP配置成TCP的启动IP
docker inspect gpsapi
记得修改数据库的地址为虚拟机的本地IP。
将Dockerfile复制到上一级目录(即和解决方案.sln文件同一级目录)下。
上传至Linux
将整个项目的源码上传至linux,博主因为使用的是虚拟机,所以这里使用挂载目录进行上传,当然你也可以使用FTP工具进行上传。
Docker部署
在当前目录下创建docker.sh文件,然后将下面内容复制进去,实现镜像的自动创建
#!/bin/bash
# 停止容器
docker stop gpsapi
# 删除容器
docker rm gpsapi
# 删除镜像
docker rmi gpsapis
# 重新创建镜像
docker build -t gpsapis .
# 启动容器
docker run -d -p 5000:5000 -p 2234:2234 --name gpsapi gpsapis
# 清理未使用的镜像
echo "y" | docker system prune
# 打印当前镜像
echo -e '----------------------------'
docker images
# 打印当前运行的容器信息
echo -e '----------------------------'
docker ps
然后直接运行我们的docker.sh
等之前完之后,打开虚拟机的浏览器,访问:http://127.0.0.1:5000/swagger/index.html
到这里,后端部分就发布完成了~~