.netcore应用容器化部署

简介: .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是你想用的端口

然后构建出来的镜像,部署到容器后,即可通过这个端口来访问。

好了,本节内容到此结束,有什么疑问请留言,后续将持续更新。

码字不易,还望支持哟!!!

相关文章
|
1月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
405 108
|
28天前
|
运维 监控 数据可视化
小白也能部署应用,3个免费的容器化部署工具测评
本文对比了三款容器化部署工具:Docker Compose、Portainer 和 Websoft9。Docker Compose 适合开发者编排多容器应用,Portainer 提供图形化管理界面,而 Websoft9 则面向中小企业和非技术人员,提供一键部署与全流程运维支持,真正实现“开箱即用”。三款工具各有定位,Websoft9 更贴近大众用户需求。
小白也能部署应用,3个免费的容器化部署工具测评
|
3月前
|
运维 监控 数据可视化
容器化部署革命:Docker实战指南
容器化部署革命:Docker实战指南
|
3月前
|
存储 运维 安全
Docker化运维:容器部署的实践指南
Docker化运维:容器部署的实践指南
|
29天前
|
运维 数据可视化 C++
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
2025年热门Web化容器部署工具对比:Portainer与Websoft9。Portainer以轻量可视化管理见长,适合技术团队运维;Websoft9则提供一站式应用部署与容器管理,内置丰富开源模板,降低中小企业部署门槛。两者各有优势,助力企业提升容器化效率。
164 1
2025 热门的 Web 化容器部署工具对比:Portainer VS Websoft9
|
2月前
|
存储 监控 Java
如何对迁移到Docker容器中的应用进行性能优化?
如何对迁移到Docker容器中的应用进行性能优化?
235 58
|
2月前
|
缓存 Java Docker
如何对应用代码进行优化以提高在Docker容器中的性能?
如何对应用代码进行优化以提高在Docker容器中的性能?
196 1
|
4月前
|
关系型数据库 MySQL 数据库
【赵渝强老师】数据库不适合Docker容器化部署的原因
本文介绍了在Docker中部署MySQL数据库并实现数据持久化的方法,同时分析了数据库不适合容器化的原因。通过具体步骤演示如何拉取镜像、创建持久化目录及启动容器,确保数据安全存储。然而,由于数据安全性、硬件资源争用、网络带宽限制及额外隔离层等问题,数据库服务并不完全适合Docker容器化部署。文中还提到数据库一旦部署通常无需频繁升级,与Docker易于重构和重新部署的特点不符。
278 18
【赵渝强老师】数据库不适合Docker容器化部署的原因

推荐镜像

更多