.NET Core 通过Docker部署到Ubuntu

4 篇文章 1 订阅
2 篇文章 0 订阅

一、系统环境

window10:

  • Visual Studio
  • Docker desktop
  • .Net core

Ubuntu1804:

  • Docker

二、部署流程

1. 发布前的准备

     因为我们后端的代码是运行在某个端口上的,因此需要在程序文件中指定程序运行的端口号(例如9000):
program.cs

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    // webBuilder.UseStartup<Startup>(); // 原本的代码
                    webBuilder.UseStartup<Startup>()
                    .UseUrls("http://*:9000");
                });

2. 生成release文件

  • ① 更改解决方案配置为Release,默认为Debug模式
    在这里插入图片描述
  • ② 右键项目点击生成或重新生成,控制台显示生成成功和生成文件位置:
    在这里插入图片描述
  • 在Release目录下新建Dockerfile文件(没有后缀),文件路径及内容如下:
    在这里插入图片描述

注:

  • 这里的9000表示向外暴露的端口号,因此需要根据自己的情况修改,与第一步程序运行的端口号一致
  • xxx.dll 表示项目名称的dll文件,因此要与 工程名\bin\Release\netcoreapp3.1目录下的 xxx.dll文件名一致。
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR ./
COPY . ./
EXPOSE 9000
ENTRYPOINT ["dotnet", "xxx.dll"]

3. 生成镜像

      镜像仓库: Docker默认使用的是国外的镜像仓库,因此在拉取基础镜像时会很慢,因此可以考虑使用国内的阿里云镜像仓库作为自己的远程仓库,这样也方便部署的时候直接拉取镜像到服务器,配置方式可参考:XXX
在 xxx\bin\Release\netcoreapp3.1 目录(Dockerfile所在目录)下执行如下命令生成镜像:

注:

  • xxx:镜像名称
  • v0.0.1:镜像版本
    docker build -f Dockerfile . -t xxx:v0.0.1
    在这里插入图片描述
         成功生成镜像(由于我之前生成过,所以显示build时间很快),这时可以在Docker desktop中看到我们的镜像。在这里插入图片描述
    或直接通过命令docker images查看镜像信息。

4. push镜像到远程仓库

     为了方便我们在服务器上方便的拉取镜像部署以及对镜像版本的迭代,可以将我们的镜像push到我们阿里云的镜像仓库(因为国内访问Docker Hub太慢)。命令参考阿里云镜像仓库的操作。以下操作参考自己阿里云镜像仓库的操作指南。

  • 登录到阿里云Docker registry,输入注册时的密码
    docker login --username=xxxx registry.cn-hangzhou.aliyuncs.com
  • 重新给当前镜像加tag(也可以直接push,这里只是为了规范)
    docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/beyonderwei/xxx:[镜像版本号]
  • 推送镜像到自己的阿里云Docker Registry
    docker push registry.cn-hangzhou.aliyuncs.com/beyonderwei/xxx:[镜像版本号]

5. 在服务器上拉取镜像

  • 登录到阿里云Docker registry
    docker login --username=xxxx registry.cn-hangzhou.aliyuncs.com
  • 拉取镜像
    docker pull registry.cn-hangzhou.aliyuncs.com/beyonderwei/xxx:[镜像版本号]

6. 最终部署

  • 执行命令得到容器
    docker run -d --name [容器名] -p 9000:9000 [镜像名称]:[版本号]
    eg:
    docker run -d --name xxx -p 9000:9000 registry.cn-hangzhou.aliyuncs.com/beyonderwei/xxx:v0.0.1

注:这里的端口映射应与第一步配置的端口相同,不然将导致接口无法被访问到。

7. 接口测试

  • 查看运行状体
    在这里插入图片描述
  • 通过浏览器或postman测试开放的接口。

三、帮助文章




关于作者:

个人网站:http://beyonderwei.com
邮箱:beyonderwei@gmail.com
微信公众平台

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值