.netcore应用容器化部署
2021/5/21 18:56:41
本文主要是介绍.netcore应用容器化部署,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前面,我们讲解了如何在wsl中安装数据库,.netcore运行时,以及如何发布一个.netcore应用,为了构成一个完整的小系列,本节,我们来学习一下,如何将.netcore应用容器化【当然这里还是以wsl为平台】
环境准备
1.Docker安装
之前,出过一个docker的小系列,请参考
(一)零基础小白都能懂的超全Docker入门教程之开篇
(二)Docker Desktop及Kubernetes安装
(三)Docker、k8s使用初体验及Dashboard避坑指南!!!
(四)动手构建第一个自己的docker镜像,并深入学习docker镜像和容器管理
通过以上4个步骤,可以学习到docker的一些基础知识,包括是什么,为什么,怎么用,其中包括,如何构建镜像、启停容器以及一些需要注意的问题。
更多内容请参考相关系列 Docker&k8s_画鸡蛋的不止达芬奇-CSDN博客
2.启用相应功能
因为本节内容是基于wsl的,而且最新版本的docker for windows也是支持wsl2的,所以建议安装wsl2,并在docker中启用wsl,启用如下功能
- 启用WSL 2作为引擎
- 在集成项下,选择相应的系统
如果你尚未安装wsl环境,或非wsl2环境,请参考
wsl安装及版本升级
wsl---ssh远程连接、ip映射及服务自启详细配置
wsl安装mysql初始化数据库并设置服务自启
更多相关内容请参考该系列 linux_画鸡蛋的不止达芬奇-CSDN博客
至此,我们就可以开始本节的正式的内容了。
创建应用
.netcore应用创建
本次,我们创建一个aspnetcore应用,也就是一个web应用,并将其部署到容器中,
首先,我们通过以下命令创建一个web应用并生成
dotnet new web -o DockerTest dotnet build DockerTest\DockerTest.csproj
然后,再将项目发布到Release路径下,以便再构建镜像的时候应用
dotnet publish DockerTest\DockerTest.csproj -c Release
然后可以,先试运行以下看看效果
dotnet run DockerTest.csproj 或 dotnet DockerTest.dll
Dockerfile创建
在DockerTest.csproj的同级目录下添加Dockerfile文件并且编辑其内容,这里可以使用vs添加该文件,这样会自带默认内容,我们可以通过修改默认内容来达到我们的目标
然后选择目标平台为linux.
#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 EXPOSE 443 FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build WORKDIR /src COPY ["DockerTest.csproj", "."] RUN dotnet restore "./DockerTest.csproj" COPY . . WORKDIR "/src/." RUN dotnet build "DockerTest.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "DockerTest.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "DockerTest.dll"]
再该文件中,我们可以看到容器暴露的端口为80 443,项目基于aspnet:5.0,
此时,我们可以启用docker来构建镜像。
docker build -t dockertest -f Dockerfile . # -t指定镜像的名称,这里要注意只能是小写 # -f指定Dockerfile的路径 .表示当前路径
此时,我们只需要等待执行完毕即可。
当镜像构建完毕后,我们可先查看镜像,然后再运行一个容器
docker images #查看所有镜像 docker run -d -p 5060:80 dockertest #-p表示映射的端口,将本地的5060映射到容器的80端口 docker run -d -p 4446:80 --name 3334 dockertest #启动特定名称的容器 docker container ls #查看全部容器
此时,容器即已成功启动,我们可以通过再浏览器中输入地址来验证。
表明我们的容器已经部署成功。
到这里,基本上本节内容已经结束了,但这里提一个坑,不注意的话很容易掉进去,
按照我们的思路,我们如果想将容器内的应用通过特定的端口暴露出来,只需要修改Dockerfile中的EXPOSE即可。
但是,注意了!!!!
如果只更改端口,是没办法通过浏览器访问到的,然后通过各种调试你会发现,只有暴露80端口并添加映射的时候才能访问到,这是因为啥呢???
我这里记录了.netcore应用容器化时更改Expose端口无法访问
其实,这是因为.netcore默认监听的端口是80,因此,容器启动应用时,其实监听的是80端口,要想通过其他端口访问,我们只需要再Dockerfile中添加ENV变量来指定即可
ENV ASPNETCORE_URLS=http://+:5000 #5000是你想用的端口
然后构建出来的镜像,部署到容器后,即可通过这个端口来访问。
好了,本节内容到此结束,有什么疑问请留言,后续将持续更新。
码字不易,还望支持哟!!!
这篇关于.netcore应用容器化部署的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具