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

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

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

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

相关文章
|
3天前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####
|
9天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
9天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
11天前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
12天前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理
|
18天前
|
JavaScript 持续交付 Docker
解锁新技能:Docker容器化部署在微服务架构中的应用
【10月更文挑战第29天】在数字化转型中,微服务架构因灵活性和可扩展性成为企业首选。Docker容器化技术为微服务的部署和管理带来革命性变化。本文探讨Docker在微服务架构中的应用,包括隔离性、可移植性、扩展性、版本控制等方面,并提供代码示例。
54 1
|
5天前
|
Kubernetes 监控 安全
容器化技术:Docker与Kubernetes的实战应用
容器化技术:Docker与Kubernetes的实战应用
|
12天前
|
前端开发 开发者 Docker
深入探索Docker Compose:简化多容器应用的部署
深入探索Docker Compose:简化多容器应用的部署
39 0
|
开发框架 前端开发 .NET
ASP.NET Core 核心特性学习笔记「下」
ASP.NET Core 核心特性学习笔记「下」
|
开发框架 前端开发 中间件
ASP.NET Core 核心特性学习笔记「上」
ASP.NET Core 核心特性学习笔记「上」
下一篇
无影云桌面