net core linux容器,.net core以docker部署Linux

.NetCore程序部署Docker通常有两种模式:

1、在本地编译成dll文件后通过rz命令或工具上传到服务器上,然后构建Docker镜像再运行容器。该方案和以前.net framework时部署windows类似,手工复制文件与重启。

2、在服务端直接通过Git获取最新源代码后编译打包,然后再构建Docker镜像再运行容器。该方案免去了往服务器复制文件这步操作,但是服务器环境需要安装.Net Core SDK 来编译源代码。

接下来我们将分别使用方案1和方案2制作镜像并生成容器。

1.项目创建

首先Visual studio2019创建一个.netCore Web应用,选择包含Docker文件(linux)

a6c78a2c15f2

a6c78a2c15f2

DockerFile选择始终复制

a6c78a2c15f2

接下来我们分别使用方案1和方案2部署

2.方案1(手动发布):

编写dockerFile内容如下:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base

WORKDIR /app

EXPOSE 80

EXPOSE 443

COPY . .

ENTRYPOINT ["dotnet", "netCore01.dll"]

VS解决方案,发布

a6c78a2c15f2

上传文件

我们的发布目录在:源码项目目录\bin\Release\netcoreapp3.1\publish

发布完成后,我们到发布目录,将发布后的publish文件夹中所有上传到linux目录/home/wwwroot/netCore01_01

我这里是将publish中文件打包为publish.rar,然后通过rz命令上传到/home/wwwroot/netCore01_01目录,然后通过 rar x publish.rar解压,你也可以使用xftp/Secure file transfer client工具上传更易上手

解压完成后,我们执行镜像构建

进入到个net-core项目所在目录执行下面的命令(docker file所在目录)

docker build -t netcore01-v1 . *

(注意后面这个空格和.不能省,build是先找dockfile)

build镜像时会自动联网下载所面的基础镜像,如果机器无法联网可以自行下载并pull到本机,或者搭建私有镜像仓库解决这个问题。

构建过程如下,镜像aspnet:3.1-buster-slim如果提前下载过,整个build过程约10秒钟

a6c78a2c15f2

容器生成

docker run --name netcore_v1_01 -d -p 7001:80 netcore01-v1

生成后我们用宿主机IP+70001端口就可以访问我们的服务了,80是容器内部端口

a6c78a2c15f2

3.方案2(源代码模式):

此模式通常是配合使用jenkins+git自动化构建,jenkins+git的我们下篇专门讲解,本例我们采用模拟源代码已经拉到linux后的场景,更便于我们理解后面与jenkins整合是如何自动构建的。

vs 的dockerfile如下(VS生成后一句也没修改)

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base

WORKDIR /app

EXPOSE 80

EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build

WORKDIR /src

COPY ["netCore01.csproj", ""]

RUN dotnet restore "./netCore01.csproj"

COPY . .

WORKDIR "/src/."

RUN dotnet build "netCore01.csproj" -c Release -o /app/build

FROM build AS publish

RUN dotnet publish "netCore01.csproj" -c Release -o /app/publish

FROM base AS final

WORKDIR /app

COPY --from=publish /app/publish .

ENTRYPOINT ["dotnet", "netCore01.dll"]

我们用命令对源代码生成镜像

1.先将代码打包成rar

2.使用rz命令上传到/home/wwwroor/netCore01目录(目录结构自行通过mkdir创建)

3.使用rar命令解压(如果linux上没有安装,自行安装该程序)rar x netCore01.rar 建议初学者使用工具上传

4.编译与构建:

docker build -t netcore01 .

注意后面的.不能省略(代表当前目录),netcore01是image名称,可以自行取名,但必须全部小写字母。

然后系统根据docker文件描述自动执行下载,编译及打包,这种模式步骤制作镜像时步骤较多,大概10多个步骤,完全完成需要2分钟左右。

编译完成后,查看下镜像名称:

docker images

a6c78a2c15f2

然后我们可以根据镜像创建容器:

docker run --name netcore_ins_01 -d -p 9001:80 netcore01

其中9001为对外映射的端口,我们可以直接用宿主机IP:9001访问该服务

docker ps -a 查看docker 容器

a6c78a2c15f2

访问URL可以看到返回JSON

a6c78a2c15f2

4.总结

通常个人开发或练习采用方案1即可,当我们开发团队协同工作时将使用方案2的升级版本(jenkins+git自动化)

在微服务大行其道的今天,springboot+springcloud声势浩大,.net framework已经被虐的无地自容,.net core+容器+自动化还能勉强撑撑场面,也算为是.net未来 保留了一线生机和希望。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值