centos环境下使用docker部署.net8

创建项目

  1. 创建.net8版本的webapi项目

  1. 创建dockerfile

有两种创建dockerfile文件的方式,一是创建项目的时候勾选“启用容器支持”,如图1所示,二是在解决方案资源管理器中鼠标右键项目,选择“添加”,再点击“Docker支持”,在弹出的弹框中进行选择,如图2所示。

图1

图2:

  1. dockerfile文件内容

注意:Expose暴露的端口号要与launchSettings.json中Container (Dockerfile)节点下的ASPNETCORE_HTTP_PORTS对应的端口号保持一致

默认配置

# 请参阅 https://aka.ms/customizecontainer 以了解如何自定义调试容器,以及 Visual Studio 如何使用此 Dockerfile 生成映像以更快地进行调试。

# 此阶段用于在快速模式(默认为调试配置)下从 VS 运行时
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER app
WORKDIR /app
EXPOSE 8080


# 此阶段用于生成服务项目
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["CoreDocker.Service.Api/CoreDocker.Service.Api.csproj", "CoreDocker.Service.Api/"]
RUN dotnet restore "./CoreDocker.Service.Api/CoreDocker.Service.Api.csproj"
COPY . .
WORKDIR "/src/CoreDocker.Service.Api"
RUN dotnet build "./CoreDocker.Service.Api.csproj" -c $BUILD_CONFIGURATION -o /app/build

# 此阶段用于发布要复制到最终阶段的服务项目
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./CoreDocker.Service.Api.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false

# 此阶段在生产中使用,或在常规模式下从 VS 运行时使用(在不使用调试配置时为默认值)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "CoreDocker.Service.Api.dll"]

修改后的配置:如果按默认配置,构建镜像的时候会出现异常情况,暂时不清楚原因。

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 8080



COPY . .

ENV TimeZone=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone
ENTRYPOINT ["dotnet", "CoreDocker.Service.Api.dll"]
  1. 将dockerfile属性中“复制到输出目录”中的“不复制”改为“如果较新则复制”。

发布项目

网上大多数Docker部署.netcore教程是不需要发布的,直接把整个项目打包上传到CentOs系统中,也不需要修改dockerfile属性“复制到输出目录”,但本地实测这样操作构建镜像的时候会出现各种各样的问题。

上传项目到服务器

使用第三方工具将本地项目上传到CentOS7系统中,例如SecureCrt、Xftp、MobaXterm等。这里以MobaXterm举例。

  1. CentOs系统重创建项目目录
mkdir -p /opt/myproject/coredocer_service

  1. 打开本地cmd工具,执行以下命令将本地项目文件夹上传到CentOs系统对应目录
scp -r D:/Code/Demo/Net8/MicrosoftService/CoreDocker.Service.Api/bin/Release/net8.0/publish root@192.168.12.136:/opt/myproject/coredocer_service

  1. 进入CentOs系统项目目录下,查看文件是否拷贝成功。
cd /opt/myproject/coredocer_service/publish
ls

docker部署

  1. 构建镜像

命令:docker build -t 镜像名称:版本号

docker build -t coredocker.service:1.0 .

  1. 查看镜像
docker images

  1. 创建并运行容器

命令:docker run --name=容器名称 -p 主机端口:容器端口 -d 镜像名称:版本号

docker run --name coredocker.service -p 8089:8080 -d coredocker.service:1.0
  1. 查看当前正在运行的容器信息,状态为Up表示容器正在运行中。
docker ps

检测部署是否成功

本地访问:

CentOs系统访问

curl http://192.168.12.136:8089/WeatherForecast

posted @   相遇就是有缘  阅读(95)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
历史上的今天:
2022-12-25 sql server 分区
  1. 1 我记得 赵雷
  2. 2 北京东路的日子 汪源
  3. 3 把回忆拼好给你 王贰浪
把回忆拼好给你 - 王贰浪
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

Not available

点击右上角即可分享
微信分享提示