IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> docker玩法,以及 docker部署springboot项目 、docker部署.net core /.net5 项目 -> 正文阅读

[系统运维]docker玩法,以及 docker部署springboot项目 、docker部署.net core /.net5 项目

1. docker基础玩法

关键点:

  1. 安装centos7
  2. 在里面安装docker,升级到最新docker版本,熟悉相关命令。
    相关命令如:
docker images
docker ps 
docker ps -a
docker rm
docker rmi
docker stop
docker run -d -p 1111:1111 --name=xxxx  image:v1
docker build -t cn.code/simeple-demo:latest .
dcoker search xxxx
docker pull xxx
等等等等略。
  1. 然后在docker里面下载redis,rabbitmq等的镜像,启动,当作正常服务来用,体验很好。而且资源占用惊人地少。

2. docker中部署springboot项目

关键点:

  1. 自己写个简单的springboot项目,打包成 .jar文件。(值得一提的是,pom.xml文件中可能要增加对应的<build>节点。)
  2. 将jar文件上传到centos机器中
  3. 建立Dockerfile,自己打包镜像
  4. 启动镜像,也即将springboot项目部署到了docker中。

相对较为简单,细节以后补充

3. docker中部署.NET 5 web项目(重点)

自己建立一个简单的.net5 web项目,就是mvc之类的。

3.1 windows,iis中部署此项目

要点:

  1. 应用程序池也不见得非得是 托管的或者非托管的,都行。
  2. visual studio中选中项目,发布。 如果准备用于windows中部署,就不要选择生成单文件了。否则会遇到500.38错误。官方这么说的,我们照着这么用就行了。
  3. 然后就可以像访问 .net framework web项目一样正常访问就差不多了。

3.2 centos7 ,部署此web项目

要点:
有用的官方文档:
使用 Nginx 在 Linux 上托管 ASP.NET Core

  1. 安装.net5 SDK
  2. 安装ngxin,正常启动等不提了。
  3. 修改nginx的配置文件,配置反向代理
  4. 在开发机器中,使用visual studio发布项目,目标为 linux-64。然后将产生的许多文件全部上传到centos机器中。
  5. 然后在centos机器中,使用命令 dotnet myWebsite.dll 启动此项目,控制台明显可见输出内容。(我记得.net core某些版本的启动命令不是这样的,但不重要,这个.net5的项目的启动命令就是这样的)
  6. 然后从其他机器中,访问nginx的 ip:80 即可被反向代理到这个.net5 web项目中,也即成功部署了项目到centos7中。

其中的一个关键内容,修改ngxin.conf文件的一部分内容为:

server {
    listen        80;
    server_name   example.com *.example.com;
    location / {
        proxy_pass         http://127.0.0.1:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

linux 守护进程什么的不提了,可有可无。
至于linux基本的防火墙端口开放,或者干脆防火墙关闭什么的基操,略。

3.3 centos7 中的docker中,部署此web项目

此部分是本文的精华部分
开发此项目使用Visual Studio,在windows机器上,称此机器为A。
部署此项目在一个安装了docker的CentOS7机器上,称此机器为B。

步骤如下。

3.3.1. 先不妨给自己的docker中安装必要的镜像(但这一步并非必要,后面会提到)

B 机器中

在这里插入图片描述
跳转到:
在这里插入图片描述
然后直接装sdk:
在这里插入图片描述
在这里插入图片描述
地址
在这里插入图片描述

3.3.2. 给.NET5项目,添加Dockers支持

A 机器中

会产生一个Dockerfile文件,这个文件就是将此项目打包为docker镜像的必要文件。
在这里插入图片描述
得到Dockerfile
在这里插入图片描述
Dockerfile的内容形如

以下即是我这个示例.net5项目产生的Dockerfile文件的内容
只是个示意,不用在意细节,不同的项目产生的内容当然是不同的。
另外,值得一提的是前面几行 FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base等,会在产生我们自己的项目镜像前自动下载需要的这个镜像,这也就响应了前面 3.3.1节提到的后面会解释。

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["XJ.Web/XJ.wWeb.csproj", "XJ.Web/"]
COPY ["XJ.bOffice/XJ.bOffice.csproj", "XJ.bOffice/"]
COPY ["XJ.fFileManager/XJ.fFileManager.csproj", "XJ.fFileManager/"]
COPY ["XJ.dDictionary/XJ.dDictionary.csproj", "XJ.dDictionary/"]
COPY ["XJ.dDatabase/XJ.dDatabase.csproj", "XJ.dDatabase/"]
COPY ["XJ.aStructure/XJ.aStructure.csproj", "XJ.aStructure/"]
COPY ["XJ.cCommon/XJ.cCommon.csproj", "XJ.cCommon/"]
RUN dotnet restore "XJ.Web/XJ.wWeb.csproj"
COPY . .
WORKDIR "/src/XJ.Web"
RUN dotnet build "XJ.wWeb.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "XJ.wWeb.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "XJ.wWeb.dll"]

3.3.4 然后这个项目是由git管理的,我在docker所在的服务器中将此项目clone下来,并生成镜像

B机器中

git clone this-project.git,在B机器中得到此项目的源码,比如得到 目录 this-projecct,里面就是项目源码。
当然,要切换到前面A机器中添加docker支持时对应的分支上,两边代码保持一致。

然后,将A机器中刚才产生的那个Dockerfile文件设法传送到B机器中,放到 this-project 目录下的根目录中。
然后执行docker build -t this-project:v1 . ,然后就开始不是那么快的镜像打包。
会依次下载需要的镜像,然后编译编码,最终产生项目的镜像。

以下是我此次操作的过程截图:
在这里插入图片描述

上图可见,最终确实产生了镜像,也即图片中下部的 xj-demo:v1 这个镜像。

3.3.5 启动镜像,也即在docker中启动项目

如下图,启动镜像。
在这里插入图片描述

其中,从命令中可见,将镜像启动后的80端口映射到B机器自身的80端口。
那么,理论上我访问B机器的80端口,就可以看到启动成功的网站。

试一下:
在这里插入图片描述

如图,访问成功。
也即此.net5 web项目在docker中部署成功。

顺便看一下docker ps
在这里插入图片描述
完美实现预期。


  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-27 14:29:21  更:2021-09-27 14:29:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:21:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码