将本地.NET 6 WebAPI项目部署到阿里云Linux云服务器的Docker容器步骤记录

一,购买阿里云Linux服务器,我只是测试跑通,所以购买一个按量付费,第二天自动释放的服务器,这样几毛钱就可以玩一盘。

二,配置云服务器的安全组规则,在入方向开放80、1433端口

三,通过SSH工具链接上云服务器,执行升级命令.

    yum update
    yum install epel-release -y
    yum clean all
    yum list

四,安装docker,执行命令

    yum install docker-io -y

五,启动docker,执行命令

    systemctl start docker

六,安装docker后,查看下docker的信息

    docker info

七,进入阿里云后台,找到容器镜像服务,找到镜像加速器

八,根据镜像加速器的操作文档执行命令,配置镜像加速器,配置这个的目的是为了下载sqlserver的速度快一点

九,回到Linux服务器命令行界面,执行sqlserver的镜像下载

    docker pull microsoft/mssql-server-linux

十,运行镜像

    docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=123456Abc$' -p 1433:1433 -d microsoft/mssql-server-linux

十一,找到云服务器的公网IP,找个数据库管理软件比如Navicat,远程链接下数据库,确保正常。

十二,打开.NET 6 WebAPI项目的配置文件,将Server指向云服务器的公网IP,将Password改为上面设置的123456Abc$

十三,在.NET 6 WebAPI项目下执行update-database,远程向云服务器中docker里的sqlserver更新数据库信息。

十四,在Visual Studio 2022里,选中WebApi项目 → 右键 添加 → docker 支持 → 选择 Linux,然后你会看到项目下生成一个Dockerfile

十五,打开.NET 6 WebAPI项目根目录下打开命令行工具(也就是在本地电脑PowerShell里,进入webapi项目根目录下),创建本地镜像

    docker build -t fuckwebapi .

    你本地电脑应该先安装了docker软件,并且要运行起docker,才能使用这个命令。注意命名中后面的那一点很重要。

十六,docker镜像创建成功后,查看一下

    docker images

十七,进入阿里云后台,容器镜像服务,创建个人版实例,设一个Registry登录密码

十八,在个人版实例下,找到镜像仓库,再创建一个镜像仓库,设为公开(这里只是方便跑通流程,你应该设为私有),仓库信息那里要选择本地仓库。创建成功后,会显示明确的操作指南。

十九,回到本地电脑命令行工具,先登录阿里云Docker Registry

   docker login --username=d*****g registry.cn-hangzhou.aliyuncs.com

    d*****g是你的阿里云账号,然后提示Password:  输入十七步设置的密码。

二十,给本地镜像打个标签

    docker tag 00ba9aea88b5 registry.cn-hangzhou.aliyuncs.com/xxxxoooo/test:1.0.0

    上面命令中tag后面写十六步查看到的,对应镜像的IMAGE ID的字符串

二十一,标签打好后,可以再查看下本地镜像

    docker images

二十二,将镜像推送到Registry

    docker push registry.cn-hangzhou.aliyuncs.com/xxxxoooo/test:1.0.0

    然后你会明显地看到工具正在把本地镜像文件上传到阿里云的镜像仓库中

二十三,镜像上传成功后,到阿里云后台,镜像仓库,镜像版本中看到。

二十四,应该在云服务器里拉取这个镜像,然后部署到云服务器里的docker里了。

    回到云服务器的SSH命令行面板,从Registry中拉取镜像命名:

    docker pull registry.cn-hangzhou.aliyuncs.com/xxxxoooo/test:1.0.0

二十五,运行镜像,注意镜像名称必须和上一步拉取的镜像名称保持一直,包括版本号

    docker run -d --name fuckwebapi -p 80:80 registry.cn-hangzhou.aliyuncs.com/xxxxoooo/test:1.0.0

二十六,查看下镜像运行情况,

   docker ps

二十七,用postman工具试试端口是不是能访问了,通过http://公网IP/api/,端口是默认的80