前言

作为一名.Net菜鸟开发者,平时对Linux接触的并不多,项目部署这一块都是运维小哥顶着,但是作为混迹在云原生项目组的人咱也不能什么都不知道,该掌握的知识还是要懂的,所以借着这次机会,梳理一下项目部署这块的知识点。如果在阅读的过程中发现有什么不合理的地方,还请多多指教!

环境准备

VS2022
CentOS 7
Docker Desktop
.NetCore 6.0
Xshell 7

.NET Core项目准备

1.首先我们先创建一个空的ASP.NET Core Web应用



项目启用Docker支持,然后会生成一个Dockerfile文件



我们来解析以下Dockerfile文件里面的内容与流程



对多阶段构建感兴趣的同学可以移步官网 使用多阶段构建

2.我们可以先在本地将项目构建成镜像看看效果

打开PowerShell 进入项目解决方案目录路径





接下来我们将项目打包成镜像:
docker image build -f ./NetCoreWeb/Dockerfile -t aspnetcore:latest .



:这里使用 docker build -t aspnetcorewin .命令也可以,只不过有一些坑,遇到问题了可以在评论区交流

打包完成,我们可以使用Docker命令来查看镜像:
docker images



我们也可以使用Docker Desktop客户端查看镜像

3.接下来我们将镜像run起来,构造出一个容器:

docker run --name=aspnetcorewin -p 8801:80 -d aspnetcorewin

  • --name :指定容器名称。
  • --p :指定容器端口。
  • --d :指定容器后台运行。



查看正在运行的镜像:
docker ps




我们直接本地访问我们映射的端口:localhost:8801

到这里我们在window上已经可以成功访问我们到项目了
接下来我们先对我们Linux服务器的环境进行配置,方便后续部署项目

Linux环境配置:

使用XShell或其他工具连接上我们的Linux服务器

1.配置yum

更新yum包

sudo yum update

安装yum-utils 用来管理yum源

sudo yum install -y yum-utils

查看资源库中有没有安装过的docker rpm包

yum list installed | grep docker

如果之前安装过可以不用安装,如果想重新安装也可以
执行卸载老版本docker及其相关依赖即可:

sudo yum remove docker docker-common container-selinux docker-selinux docker-engine

2.安装docker

yum -y install docker-ce


如果出现 No package docker-ce available 错误,这里我们只需要设置稳定的仓库,添加yum源即可。

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo



然后再执行安装Docker命令进行安装就可以了。



我当时安装的时候踩了一些坑
1.“sqlite3.OperationalError: database is locked” 这里可能是我之前中断过yum的更新导致yum进程被锁了,最后把yum更新进程杀掉就可以了。
2.安装过程中一直停留在running transaction

3.启动docker

启动docker
sudo systemctl start docker

设置docker开机自启动
sudo systemctl enable docker

查看docker是否运行
systemctl status docker

4.安装.NetCore SDK 6.0

安装包配置

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

执行安装

sudo yum install dotnet-sdk-6.0

安装可能会花费些时间,请耐心等待哦!

安装完成

验证安装环境

dotnet --info

OK 环境配置完成!

Docker部署.NetCore 项目

调整Dockerfile文件属性

我们先将Dockerfile文件属性复制到输出目录的方式调整为** 如果较新则复制**,方便我们部署

项目打包,拷贝至Linux服务器上

接下来我们将项目打包,然后拷贝到linux服务器编译发布
在linux上创建一个文件夹 NetCoreProgram


然后将我们打包好的项目拷贝至文件夹中
使用linux命令rz(会弹出一个上传窗口)
--

运行Dockerfile

进入解压完成的文件夹内查看文件:
unzip -d NetCoreWeb NetCoreWeb.zip

接下来按照我们上述在window下将项目编译成镜像的操作,现在在linux环境下在执行一遍:
编译成镜像(注意要在对应文件目录下执行命令):
docker image build -f ./NetCoreWeb/Dockerfile -t aspnetcore:latest .





编译完成,查看镜像:
docker images


将镜像run起来生成容器:
docker run --name=aspnetcore -p 8805:80 -d aspnetcore


查看容器是否生成成功:
docker ps


接下来我们使用curl命令来访问程序:
curl localhost:8805

OK,访问正常,到此我们的项目就部署完成啦!

使用外网访问

使用服务器地址加开放的端口号:
本机(windows)直接访问服务器地址 http://xxx.xxx.xxx.xx:8805/

OK ,访问成功
这里使用外网访问可能会遇到一些问题:
1.需要注意服务器的防火墙以及开放的端口
2.由于我这里是腾讯云的服务器,在云上它还有另外的一套安全组策略,也就是云上的防火墙,这里也需要开放端口
到此,我们的项目就部署完成啦!

结尾

当然,这里只是用了最简单的项目用来部署,实际情况中已经上了CICD与k8s了,但是如果你连最基础的都玩不转的话,遇到更复杂的情况只能寸步难行哈。
最后,希望同学们能够举一反三,要是遇到实在难以解决的问题,没事,咱们给运维小哥上上对抗,解决问题指日可待!

.NET 6 从0到1使用Docker部署至Linux环境的更多相关文章

  1. 如何使用Docker部署PHP开发环境

    本文主要介绍了如何使用Docker构建PHP的开发环境,文中作者也探讨了构建基于Docker的开发环境应该使用单容器还是多容器,各有什么利弊.推荐PHP开发者阅读.希望对大家有所帮助. 环境部署一直是 ...

  2. Spring Boot 2.0(四):使用 Docker 部署 Spring Boot

    Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下. 首先构建一个简单的 Spring Boot 项目, ...

  3. Spring Boot 2.0(三):使用 Docker 部署 Spring Boot

    Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下. 首先构建一个简单的 Spring Boot 项目, ...

  4. abp框架angular 项目docker 手动部署到Linux环境中

    1.https://aspnetboilerplate.com/Templates 2.后端项目发布,在publish中abp默认已经存在DockerFile文件 3.修改后端文件中的DockerFi ...

  5. Spring Boot 2.0(六):使用 Docker 部署 Spring Boot 开源软件云收藏

    云收藏项目已经开源2年多了,作为当初刚开始学习 Spring Boot 的练手项目,使用了很多当时很新的技术,现在看来其实很多新技术是没有必要使用的,但做为学习案例来讲确实是一个绝佳的 Spring ...

  6. Linux实战(20):Docker部署EKL入门环境记录文档

    安装环境: centos7 ,EKL全套为7.5.2版本 前期工作 拉取已下三个镜像 docker.io/logstash 7.5.2 b6518c95ed2f 6 months ago 805 MB ...

  7. Docker部署Jenkins测试环境

    安装docker环境 yum install epel-release -y && yum install docker -y 如果是高手需要docker-compose的话就再装个d ...

  8. 记录.NET Core通过Docker部署到Linux

    1.现在CentOS安装Docker环境(参考地址:https://docs.docker-cn.com/engine/installation/linux/docker-ce/centos/) 我这 ...

  9. Docker入门教程-Linux环境安装Nginx及入门使用

    介绍 Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服 ...

随机推荐

  1. 付费漫画下载、付费韩漫下载、漫画VIP下载、VIP韩漫下载哪里下

    需要的 来qq:6686496 最近迷上了韩漫(你懂的),主要为了打发时间上班摸鱼,,找了好多网站都是要收费的,就想着试着用爬虫做一个破解. 最简单的第一步,通过url分析出漫画ID.(直接看url就 ...

  2. Java中数组的定义与使用(代码+例子)

    学习目标: 掌握一维数组的使用 学习内容: 1.一维数组的定义 数组(Array),是把具有 相同类型 的多个常量值 有序组织 起来的一种数据形式.这些按一定顺序排列的多个数据称为数组.而数组中的每一 ...

  3. Linux上部署net6应用

    前言 ​ .net6都出来了,作为一名.net搬砖工却一直都在windows下部署应用,还未尝试过linux环境下部署应用.参考福禄网络研发团队的相关博客,学习一下如何将应用部署到linux系统. . ...

  4. BootstrapBlazor实战 Tree树形控件使用(2)

    继续上篇实战BootstrapBlazor树型控件Tree内容, 本篇主要讲解整合Freesql orm快速制作数据库后台维护页面 demo演示的是Sqlite驱动,FreeSql支持多种数据库,My ...

  5. Linux_文件传输工具_FileZilla

    什么是FileZilla? FileZilla是一个免费开源的FTP软件,分为客户端版本和服务器版本,具备所有的FTP软件功能.可控性.有条理的界面和管理多站点的简化方式使得Filezilla客户端版 ...

  6. M1芯片使用cocoapods 报错[!] Oh no, an error occurred

    [解决方式] 命令行1(编译): sudo arch -x86_64 gem install ffi 命令行2(安装): arch -x86_64 pod install 原出处:https://gi ...

  7. Golang | 测试与性能调优

    Test 我们在日常的工作过程中,自测是不可缺少的,公司还会要求所有的公共方法必须要写单测,在别的语言中,我们如果想要写单测还需要使用到测试框架,但是Go语言中,直接支持测试,并且使用起来非常简单. ...

  8. Masa Blazor in Blazor Day

    2022年第一场Blazor中文社区的开发者分享活动,我们的团队也全程参与其中,在议程中,也分享了我们团队的Blazor 管理后台模板,针对于Blazor,先科普一波,避免有些朋友不了解,Blazor ...

  9. LC-707

    设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针/引用.如果要使用双向链表,则还需要一个属性 ...

  10. oracle三个连接配置文件 listener.ora、sqlnet.ora、tnsnames.ora

    关于PLSQL连接ORACLE配置字符串 首先要讲一下下面的一些知识 1.ORACLE_SID:(ORACLE SYSTEM IDENTIFIER) Oracle实例是由SGA和一组后台进程组成的,实 ...