centos环境下使用docker部署.net8
创建项目
- 创建.net8版本的webapi项目
- 创建dockerfile
有两种创建dockerfile文件的方式,一是创建项目的时候勾选“启用容器支持”,如图1所示,二是在解决方案资源管理器中鼠标右键项目,选择“添加”,再点击“Docker支持”,在弹出的弹框中进行选择,如图2所示。
图1
图2:
- 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"]
- 将dockerfile属性中“复制到输出目录”中的“不复制”改为“如果较新则复制”。
发布项目
网上大多数Docker部署.netcore教程是不需要发布的,直接把整个项目打包上传到CentOs系统中,也不需要修改dockerfile属性“复制到输出目录”,但本地实测这样操作构建镜像的时候会出现各种各样的问题。
上传项目到服务器
使用第三方工具将本地项目上传到CentOS7系统中,例如SecureCrt、Xftp、MobaXterm等。这里以MobaXterm举例。
- CentOs系统重创建项目目录
mkdir -p /opt/myproject/coredocer_service
- 打开本地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
- 进入CentOs系统项目目录下,查看文件是否拷贝成功。
cd /opt/myproject/coredocer_service/publish
ls
docker部署
- 构建镜像
命令:docker build -t 镜像名称:版本号
docker build -t coredocker.service:1.0 .
- 查看镜像
docker images
- 创建并运行容器
命令:docker run --name=容器名称 -p 主机端口:容器端口 -d 镜像名称:版本号
docker run --name coredocker.service -p 8089:8080 -d coredocker.service:1.0
- 查看当前正在运行的容器信息,状态为Up表示容器正在运行中。
docker ps
检测部署是否成功
本地访问:
CentOs系统访问
curl http://192.168.12.136:8089/WeatherForecast
人生如逆旅
我亦是行人
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
2022-12-25 sql server 分区