.netcore 使用surging框架发布到docker

  1. 环境准备

首先我们需要准备本地的开发环境,主要包括以下几个方面:

  • 安装 Docker
  • 安装 Docker Compose
  • 安装 .NET Core SDK

  • 创建 .NET Core 应用

我们需要创建一个 .NET Core 应用,使用 Surging 框架,这里提供一个简单的示例:

使用 Visual Studio Code 打开控制台,执行以下命令:

dotnet new webapi -n Surging.HelloWorld.Api

然后在 Surging.HelloWorld.Api 项目的根目录下,创建 surging.json 配置文件,添加以下内容:

{
  "ServerOptions": {
    "Ip": "0.0.0.0",
    "Port": 80,
    "Token": "",
    "MappingListenPath": "api"
  },
  "ServiceCacheOptions": {
    "Type": 0,
    "Config": {
      "CacheTime": 3600
    }
  }
}
  1. 在 Docker 中运行服务

首先,我们需要在本地创建 Docker 镜像。在项目根目录下创建 Dockerfile 文件,添加以下内容:

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

WORKDIR /src

COPY . .

RUN dotnet restore

RUN dotnet publish -c Release -o /app

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-alpine3.11

WORKDIR /app

COPY --from=build /app .

CMD ["dotnet", "Surging.HelloWorld.Api.dll"]

接下来,我们可以使用 Docker Compose 来启动服务。在项目根目录下创建 docker-compose.yml 文件,添加以下内容:

version: '3.4'

services:
  surging.helloworld.api:
    image: surging.helloworld.api:latest
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "80:80"

然后在控制台输入如下命令启动服务:

docker-compose up
  1. 验证

若一切顺利,控制台输出 surging.helloworld.api_1 | info: Microsoft.Hosting.Lifetime[0],则说明服务已经启动。访问 http://localhost:80/api/HelloWorld,应该输出 Hello world

示例1:

假设我们有一个 Surging 应用,需要对外提供 restful 接口。但是出于安全考虑,我们不想在传输时直接明文传输,需要使用 HTTPS 协议进行加密。在构建 docker 镜像时需要添加相应的 SSL 证书。具体步骤如下:

  1. 生成 SSL 证书

在项目根目录下运行如下命令:

openssl req -x509 -newkey rsa:4096 -nodes -keyout key.pem -out cert.pem -days 365

输入证书相关信息后,会生成 key.pemcert.pem 文件。

  1. 修改 Dockerfile

修改上述提到的 Dockerfile,将证书复制到容器中:

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

WORKDIR /src

COPY . .

RUN dotnet restore

RUN dotnet publish -c Release -o /app

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-alpine3.11

WORKDIR /app

COPY --from=build /app .

COPY key.pem /https/key.pem

COPY cert.pem /https/cert.pem

ENV ASPNETCORE_URLS=https://+:443;http://+:80

ENV ASPNETCORE_HTTPS_PORT=443

CMD ["dotnet", "Surging.HelloWorld.Api.dll"]
  1. 修改 docker-compose.yml

仅需要添加一行环境变量:

version: '3.4'

services:
  surging.helloworld.api:
    image: surging.helloworld.api:latest
    build:
      context: .
      dockerfile: Dockerfile
    environment:
      - ASPNETCORE_Kestrel__Certificates__Default__Path=/https/cert.pem
      - ASPNETCORE_Kestrel__Certificates__Default__Password=
      - ASPNETCORE_Kestrel__Certificates__Default__AllowInvalid=
    ports:
      - "80:80"
      - "443:443"

示例2:

假设我们有一个 Surging 应用需要使用 Redis 作为缓存。在构建 docker 镜像时需要添加 Redis 的配置和安装 Redis 的库。具体步骤如下:

  1. 安装 Redis 库

修改 Surging 应用的 csproj 文件,添加以下依赖项:

<PackageReference Include="StackExchange.Redis" Version="2.2.4" />
  1. 修改 surging.json

添加 Redis 配置项:

{
  "ServerOptions": {
    "Ip": "0.0.0.0",
    "Port": 80,
    "Token": "",
    "MappingListenPath": "api"
  },
  "ServiceCacheOptions": {
    "Type": 1,
    "Config": {
      "Redis": {
        "Address": "127.0.0.1:6379",
        "Expiration": 60
      }
    }
  }
}
  1. 修改 Dockerfile

将 Redis 相关的文件添加到镜像中:

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

WORKDIR /src

COPY . .

RUN dotnet restore

RUN dotnet publish -c Release -o /app

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-alpine3.11

WORKDIR /app

COPY --from=build /app .

COPY surging.json /app/surging.json

RUN apk add --no-cache libc6-compat

COPY libssl.so.1.1 /usr/lib/

CMD ["dotnet", "Surging.HelloWorld.Api.dll"]
  1. 修改 docker-compose.yml

添加 Redis 的环境变量:

version: '3.4'

services:
  surging.helloworld.api:
    image: surging.helloworld.api:latest
    build:
      context: .
      dockerfile: Dockerfile
    environment:
      - Redis__Configuration__Password=
    ports:
      - "80:80"

以上就是 .NET Core 使用 Surging 框架发布到 Docker 的完整攻略,提供了两个示例,分别为使用 HTTPS 协议和使用 Redis 缓存。

阅读剩余 79%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:.netcore 使用surging框架发布到docker - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • 5 分钟读懂Python 中的 Hook 钩子函数

    5 分钟读懂 Python 中的 Hook 钩子函数 什么是 Hook 钩子函数? Hook 钩子函数是指系统或程序在特定事件发生时自动执行的函数,通常被称为钩子函数或回调函数。在 Python 中,使用 Hook 钩子函数可以捕获和拦截特定事件,以扩展或修改程序的行为。 如何实现 Hook 钩子函数? Python 中实现 Hook 钩子函数有多种方式,以…

    人工智能概论 2023年5月25日
    00
  • python pyaudio音频录制的实现

    安装pyaudio库 在Python中使用Pyaudio库来录制音频,首先需要安装该库,可以使用pip工具来安装,命令如下所示: pip install pyaudio 创建Pyaudio对象 在使用Pyaudio进行录音之前,需要创建PyAudio对象,并指定参数。代码如下所示: import pyaudio # 创建PyAudio对象 p = pyaud…

    人工智能概览 2023年5月25日
    00
  • pytorch如何冻结某层参数的实现

    使用 PyTorch 冻结某层参数通常有两种方式:通过手动设置 requires_grad 属性或者使用特定的库函数来实现。接下来我将详细讲解这两种实现方式的完整攻略。 手动设置 requires_grad 属性 在 PyTorch 中,我们可以通过手动设置某层的 requires_grad 属性来冻结该层的所有参数。具体步骤如下: 定义模型 我们定义一个简…

    人工智能概论 2023年5月25日
    00
  • Balabolka怎么用?Balabolka使用教程以及常见问题解决教程

    Balabolka使用教程 Balabolka是一款功能强大的朗读软件,它可以将文字材料转化为语音朗读,方便用户在不依赖视觉的情况下获取信息。它支持多种文本格式,并支持多种语音引擎,读音清晰自然,使用简单方便。接下来我们来看看如何使用Balabolka。 下载和安装Balabolka 首先,我们需要下载和安装Balabolka软件。您可以在官方网站 http…

    人工智能概览 2023年5月25日
    00
  • Pytorch反向传播中的细节-计算梯度时的默认累加操作

    PyTorch是常用的深度学习框架之一,其强大之处之一在于自动微分(Automatic Differentiation)。尤其是PyTorch使用反向传播算法(Backward Propagation)计算梯度,使得深度学习模型的训练变得更加灵活和简单。 在PyTorch反向传播中,每个变量都有.grad属性,用于存储计算得到的梯度。在计算梯度时,PyTor…

    人工智能概论 2023年5月25日
    00
  • java连接Mongodb实现增删改查

    Java连接 MongoDB 实现增删改查的完整攻略如下: 环境准备 MongoDB 安装:在 MongoDB 官网下载相应版本的 MongoDB,根据提示完成安装操作并启动 MongoDB 服务。 Java 驱动安装:在 Maven 仓库中下载 MongoDB 的 Java 驱动。在 pom.xml 中添加如下依赖: <dependency> …

    人工智能概论 2023年5月25日
    00
  • 浅析MongoDB 全文检索

    浅析MongoDB全文检索 在MongoDB中进行全文搜索可以使用它的全文索引。MongoDB中的全文搜索可以对文本字段建立索引,对这些字段进行全文搜索。下面将介绍如何在MongoDB中建立全文索引,并进行全文搜索。 建立全文索引 在MongoDB中建立全文索引可以使用文本索引类型。假设我们有一个名为users集合,其中包含一个description字段,请…

    人工智能概论 2023年5月25日
    00
  • 如何识别高级的验证码的技术总结

    下面是详细的攻略: 一、了解常见验证码的类型 目前常见的验证码类型包括图像验证码、语音验证码、滑动验证码、拼图验证码、数字验证码等。对于每一种验证码,不同的类型有不同的技术识别方法。 二、图像验证码的技术识别方法 1. 使用机器学习识别图像 使用机器学习技术,通过分析图像中的像素点、轮廓、颜色等特征,训练出一个模型,用于自动识别图像验证码。一些常见的机器学习…

    人工智能概论 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部