有你在真好 的个人博客
.Net Core部署到Docker的最简单方式
阅读:140 添加日期:6/29/2021 3:22:07 PM 原文链接:https://www.cnblogs.com/shio/articles/14035197.html

.Net Core部署到Docker的最简单方式

1.准备工作

  1. 已经安装好docker的系统
  2. 已经准备好上docker的程序
  3. 建议先在docer上拉取aspnet环境(docker pull mcr.microsoft.com/dotnet/aspnet)
  4. net 构造器环境(docker pull mcr.microsoft.com/dotnet/sdk:5.0-buster-slim)

环境

  1. asp.net core 5.0
  2. Docker version 1.13.1, build 0be3e21/1.13.1

2.Dockerfile

这是通过FTP上传方式的Dockerfile(此种方式请先拉取aspnet环境)

FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim   
WORKDIR /app
COPY . . 
#设置端口
EXPOSE 80
EXPOSE 443
ENTRYPOINT ["dotnet", "Shio.Docker.dll"] 

下面是通过仓库方式的Dockerfile(此方式直接用: vs右击项目=>添加=>docker支持)就会生成

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

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

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

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

3.FTP

  1. 可直接参考福禄网络研发团队的《.NET5都来了,你还不知道怎么部署到linux?最全部署方案,总有一款适合你》 XSHELL+XFTP
  2. 安装好XSHELL后,通过XFTP确定你的程序存放的位置,例如我就在root的同级目录下创建了codepublish文件夹来存放文件,将程序文件放入其中
  3. 现在切换文件夹(一下我用codepublish文件夹来举例):cd codepublish
  4. docker build -t Shio.Docker(此为你给这个镜像的取名 -t就是取名的意思 后面的Shio.Docker就是你给镜像取得名字)
  5. docker run -p 80:80 -p 443:443 Shio.Docker(镜像名)(-p 后面的第一个80是系统的端口第二个是容器的端口,上面的代码意思为:运行Shio.Docker镜像,并将容器的80和443端口映射到系统的80和443)

4.通过拉取镜像的方式

  1. 我下面以阿里云举例
  2. 你得现在自己的开发电脑上安装Docker Desktop(win10)
  3. 去阿里云启用《容器镜像服务》
  4. 在阿里云的《容器镜像服务》中简历命名空间与镜像仓库
  5. 打开vs右击项目发布 选择docker容器注册表=>下一步=>其他docker容器注册表
  6. 进入镜像仓库 点击仓库名称
  7. vs注册表URL(R)=阿里云镜像仓库-基础信息-公网地址
  8. vs用户名(U)=你阿里云的登录账号名称
  9. vs密码(P)=你开启容器镜像服务的密码,如果不知道可以在阿里云的仓库管理=>访问凭证=>重新设置
  10. 建议在本地的docker中也先安装aspnet的运行环境与net的构造器
  11. 用vs点击发布,发布失败的几种解决问题:
    1. 拉取ASPNET速度太慢,这个就是建议提前安装或者爬梯子
  12. 打开cmd或者Powershell
  13. docker login --username=123xxx**@qq.com registry.cn-shenzhen.aliyuncs.com
  14. docker tag 镜像的ImageId registry.cn-shenzhen.aliyuncs.com/shio/test:随便你编一个版本号
  15. docker push registry.cn-shenzhen.aliyuncs.com/shio/test:你刚刚编的版本号
  16. 在你的服务器中拉取你的镜像
    1. docker login --username=123xxx**@qq.com registry.cn-shenzhen.aliyuncs.com
    2. docker pull 仓库地址:你刚刚编的版本号
    3. docker run -p 80:80 -p 443:443 Shio.Docker(镜像名)(-p 后面的第一个80是系统的端口第二个是容器的端口,上面的代码意思为:运行Shio.Docker镜像,并将容器的80和443端口映射到系统的80和443)