.Net Core部署到Docker的最简单方式
1.准备工作
- 已经安装好docker的系统
- 已经准备好上docker的程序
- 建议先在docer上拉取aspnet环境(docker pull mcr.microsoft.com/dotnet/aspnet)
- net 构造器环境(docker pull mcr.microsoft.com/dotnet/sdk:5.0-buster-slim)
环境
- asp.net core 5.0
- 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
- 可直接参考福禄网络研发团队的《.NET5都来了,你还不知道怎么部署到linux?最全部署方案,总有一款适合你》 XSHELL+XFTP
- 安装好XSHELL后,通过XFTP确定你的程序存放的位置,例如我就在root的同级目录下创建了codepublish文件夹来存放文件,将程序文件放入其中
- 现在切换文件夹(一下我用codepublish文件夹来举例):cd codepublish
- docker build -t Shio.Docker(此为你给这个镜像的取名 -t就是取名的意思 后面的Shio.Docker就是你给镜像取得名字)
- docker run -p 80:80 -p 443:443 Shio.Docker(镜像名)(-p 后面的第一个80是系统的端口第二个是容器的端口,上面的代码意思为:运行Shio.Docker镜像,并将容器的80和443端口映射到系统的80和443)
4.通过拉取镜像的方式
- 我下面以阿里云举例
- 你得现在自己的开发电脑上安装Docker Desktop(win10)
- 去阿里云启用《容器镜像服务》
- 在阿里云的《容器镜像服务》中简历命名空间与镜像仓库
- 打开vs右击项目发布 选择docker容器注册表=>下一步=>其他docker容器注册表
- 进入镜像仓库 点击仓库名称
- vs注册表URL(R)=阿里云镜像仓库-基础信息-公网地址
- vs用户名(U)=你阿里云的登录账号名称
- vs密码(P)=你开启容器镜像服务的密码,如果不知道可以在阿里云的仓库管理=>访问凭证=>重新设置
- 建议在本地的docker中也先安装aspnet的运行环境与net的构造器
- 用vs点击发布,发布失败的几种解决问题:
- 拉取ASPNET速度太慢,这个就是建议提前安装或者爬梯子
- 打开cmd或者Powershell
- docker login --username=123xxx**@qq.com registry.cn-shenzhen.aliyuncs.com
- docker tag 镜像的ImageId registry.cn-shenzhen.aliyuncs.com/shio/test:随便你编一个版本号
- docker push registry.cn-shenzhen.aliyuncs.com/shio/test:你刚刚编的版本号
- 在你的服务器中拉取你的镜像
- docker login --username=123xxx**@qq.com registry.cn-shenzhen.aliyuncs.com
- docker pull 仓库地址:你刚刚编的版本号
- docker run -p 80:80 -p 443:443 Shio.Docker(镜像名)(-p 后面的第一个80是系统的端口第二个是容器的端口,上面的代码意思为:运行Shio.Docker镜像,并将容器的80和443端口映射到系统的80和443)