前后端分离项目中,使用Asp.net 6和Mysql数据库开发后端API,开发技术栈为EF框架操作数据库,采用的是模型优先的策略,使用AutoMapper进行数据库和响应数据之间的数据映射,测试完成后使用docker部署到阿里云上,服务器的系统版本为Ubuntu22.04

安装docker

本地Windows 10家庭版安装docker,访问docker官网,下载Windows版docker desktop

点击安装即可,安装完成后会启动docker desktop,提示安装WSL 2,打开启用或关闭Windows功能,发现WSL2和虚拟机平台都已打开,查找资料得知是wsl2版本过低,下载更新安装包安装后重启,报错消失

下面常规操作,打开命令行窗口,测试是否安装成功

PS C:\Users\zstmy> docker --version
Docker version 20.10.17, build 100c701

输出了版本号,应该是已经安装成功

创建项目的docker镜像

我的项目是.net 6.0后端API,用EF框架(Entity framework)连接操作MySql数据库,使用VS2022开发,项目目录结构如下

添加docker镜像的配置文件,这一步可以直接利用VS对docker的支持,右键项目名称,点击添加,选中docker支持,选择目标环境为Linux,VS会在项目根目录下生成文件Dockerfile,修改其中的项目地址为本地项目

打开命令行,进入项目根目录,输入docker命令docker build,创建项目的镜像文件

D:\Users\zstmy\WaiZao\WaiZao> docker build -t waizaoback .

接着运行docker images查看当前的docker镜像,可以看到镜像构建成功

PS D:\Users\zstmy\WaiZao\WaiZao> docker images
REPOSITORY                        TAG       IMAGE ID       CREATED             SIZE
waizaoback                        latest    99897bcf7010   16 seconds ago      214MB

容器化镜像,输入命令docker run -d --name waizaobackend -p 8080:80 waizaoback 。容器命名为waizaobackend,将系统的端口8080映射到容器的80端口,然后输入命令docker ps查看正在运行的容器,可以看到容器已经成功运行

PS D:\Users\zstmy\WaiZao\WaiZao> docker run -d --name waizaobackend -p 8080:80 waizaoback
a8b34d358569bfd8dcb9196bf3ddc96fc64989022100f1a0095e830dbe0d8a4d
PS D:\Users\zstmy\WaiZao\WaiZao> docker ps
CONTAINER ID   IMAGE        COMMAND               CREATED          STATUS          PORTS                                           NAMES
a8b34d358569   waizaoback   "dotnet WaiZao.dll"   37 seconds ago   Up 36 seconds   443/tcp, 0.0.0.0:8080->80/tcp                   waizaobackend

postamn测试API成功,注意此时为http,端口为之前设置的8080

docker常用命令如下:

云端部署

云环境选择阿里云ESC服务器,Ubuntu22.04系统,首先安装docker

# 安装必要的证书并允许 apt 包管理器使用以下命令通过 HTTPS 使用存储库
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release# 添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# 添加 Docker 官方库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 更新 Ubuntu 源列表
sudo apt update# 安装docker
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

输入命令systemctl start docker启动docker, 输入命令docker info可以查看当前docker的信息

docker安装完成后,拉取Mysql的docker镜像,输入命令docker pull mysql,运行docker镜像,waizao-mysql为容器名,1234为设置的Mysql数据库的密码,3306为映射的端口号

# 拉取mysql的docker镜像
docker pull mysql# 运行docker镜像
docker run --name waizao-mysql -e MYSQL_ROOT_PASSWORD=1234 -p 3306:3306 -d mysql:latest

执行之后可以看到以下输出结果

在阿里云控制台设置开放MySQL默认的3306端口以便从外界访问,路径为 安全组>>配置规则>>快速添加,勾选Mysql的端口3306,授权对象设为0.0.0.0,即默认允许所有IP访问

此时可以远程连接Mysql数据库,创建数据库testdb,用户testuser,并授予该用户在该数据库上的所有权限

修改连接字符串为远程docker上的MySQL数据的地址,cmd进入VS项目的根目录,输入命令dotnet ef database update更新数据库

按照文章开始介绍的方法创建本地项目的docker镜像,进入项目根目录,输入命令

下面将创建的docker镜像推送到阿里云服务器上,这里首先需要开通阿里云的容器镜像服务,按照所给文档将镜像推送到镜像仓库

镜像已经推送到阿里云的私人镜像仓库了,可在阿里云的控制台查看

下面进入ESC服务器,拉取刚刚上传的docker镜像,并利用docker run命令启动镜像

# 拉取镜像
docker pull registry.cn-shanghai.aliyuncs.com/wenwenzhao/waizaoback:1.0.0# 启动镜像
docker run -d --name waizaoback -p 8080:80 registry.cn-shanghai.aliyuncs.com/wenwenzhao/waizaoback:1.0.0

修改阿里云ECS服务器的安全策略以便外部访问,手动添加安全组中配置规则,端口范围设置为8080/8080,并允许所有对象访问

现在.net 6.0的后端的容器化部署操作已全部完成,打开postman进行测试,测试成功

阿里云部署.NET后端相关推荐

  1. Linux虚拟机或阿里云部署本地Javaweb项目

    Linux系统部署本地项目 服务器 Linux 阿里云.华为云.腾讯云 安装虚拟机,虚拟机就是在你的电脑中安装一台虚拟的计算机,内存.CPU.硬盘,Linux 安装到虚拟机中. CentOS7,企业级 ...

  2. Win10环境下基于Hexo的静态博客环境搭建,及其阿里云部署

    引言 1.为什么要搭建自己的个人博客 工作和学习过程中,我们经常遇到一些这样或那样的问题,此时我们可能会在网上找到相应的解决方法.但是过了一段时间之后,当我们再次碰到类似的问题时,早已忘记以前是怎么解 ...

  3. 阿里云部署Django项目(nginx+uWSGI)-2018.11

    前言:部署的前提是你的项目已经在本地完成可以运行了,我的本地环境是ubuntu16.04+python3.5+Django2.1.2+Mysql,在python虚拟环境(virtualenv)下建的项 ...

  4. 阿里云部署docker项目流程

    阿里云部署docker项目流程 这是自己的项目项目原来的项目是一个手机远程管理交换机的项目,项目中包含嵌入开发,python+flash对接的flutter(android+ios),mysql,re ...

  5. 阿里云部署Docker(5)----管理和公布您的镜像

    出到这节,我在百度搜索了一下"阿里云部署Docker",突然发现怎么会有人跟我写的一样呢?哦,原来是其它博客系统的爬虫来抓取,然后也不会写转载自什么什么的.所以,我最终明确为什么那 ...

  6. pythonmysql部署_详解centos7+django+python3+mysql+阿里云部署项目全流程

    (PS:本文假设你已经在本地联调好django和客户端,只是需要将django部署到外网) 购买阿里云服务器 到[阿里云官网],选择轻量应用服务器, 步骤如图所示: 地域随便选择哪一个,镜像的话,对比 ...

  7. 阿里云 部署SpringBoot和Vue项目 亲测可用(第一次部署经验贴)

    阿里云 部署SpringBoot和Vue项目 亲测可用!第一次部署经验贴! 前言:与伙伴一起写了一个项目,但是由于老师要我们部署到服务器上,而我从未有部署过,查看了csdn很多博客,试了好多篇,才成功 ...

  8. 阿里云部署Java开发环境

    阿里云部署Java网站和微信开发调试心得技巧(上) 本文主要是记录在阿里云服务器从零开始搭建Java执行环境并且部署web project的过程,方面以后查阅. 一.申请阿里云服务器 购买阿里云服务器 ...

  9. 阿里云部署数据库(遇到的问题及解决方案)

    阿里云部署数据库(遇到的问题及解决方案) 1.起因:安装数据库 2.遇到的问题: 问题:ERROR 1045 (28000): Access denied for user 'root'@'local ...

  10. H3C对接外部Portal+Radius认证计费系统实现mac-trigger快速认证Mac无感知认证并结合L2TP实现阿里云部署对接配置

    H3C对接外部Portal认证+Radius认证计费系统平台 实现基于mac-trigger快速认证协议的Mac无感知认证功能 并结合L2TP实现阿里云部署 实现AD域LDAP对接,实现用户名密码实名 ...

最新文章

  1. 深入理解JDK动态代理
  2. 常用标准库_C语言标准IO库常用函数
  3. 产品经理应该如何设计面包屑原理
  4. 阿里云服务器(BT面板)Vue+Node(Egg)部署流程
  5. Codeforces 914D - Bash and a Tough Math Puzzle 线段树,区间GCD
  6. 深度学习(07)-- 经典CNN网络结构(Inception (v1-v4))
  7. python函数能返回列表吗_Python函数返回列表还是作为生成器工作?
  8. 深度学习笔记(4) 浅层神经网络
  9. NoSQL和Redis简介及Redis在Windows下的安装和使用教程
  10. FTP的上传下载工具类
  11. 今天终于搞懂了:为什么Java的main方法必须是public static void?
  12. window2008 、 oracle11.2g 无法imp,dmp。
  13. python入门容易进阶难_为什么Python入门容易,精通却很难!Python进阶之路!
  14. 极速PyQt5基础教程06:QtDesigner设计软件界面
  15. 图的深度优先遍历和广度优先遍历算法流程图
  16. PS存储为和导出为的区别
  17. 2022华为软挑比赛(初赛笔记)
  18. SLM—仿真过程与数据管理平台
  19. 网易严选——迅速崛起的新消费品牌
  20. MAHNOB-HCI-TAGGING DATABASE中BDF文件的Python读取

热门文章

  1. 银河麒麟安装docker-compose体验
  2. A/Btest (A/B测试)的营销策略效果分析
  3. A/BTest 基础
  4. 三点组成的三角形的面积计算公式(海伦公式)
  5. 蓝色动力Windows XP SP3 VOL简体中文正式版V2013.02
  6. Navicat模糊查询表
  7. cada0图纸框_按1:1画图后如何出A0图纸图框怎么设置?
  8. 学习Vue3 第一章
  9. Python通过哈希算法实现文件完整性校验-以及大型文件完整性校验
  10. 读取工程下的文档 统计重复的姓名 并按次数排序 java_当多个节点有相同名字但是内容不同的时候,生成的类名是相同的,导致导入项目中的时候不好识别。...