上一节演示如何安装Docker,链接:Docker学习笔记之-在CentOS中安装Docker

本节演示 将.net core 3.1 部署到docker容器当中,并使用 Nginx反向代理,部署平台 CentOS 7.8

在演示之前先打地基:

1,需要安装 Nginx 支持 (centos7.8 默认不带Nginx)

2,需要安装 .NET Core Runtimes 运行时支持

额外补充:如果要在CentOS上开发 .NET应用,要安装 SDK(SDK中包括运行时)。 如果只需运行应用程序,只需要安装运行时。

如果要安装该运行时,建议安装 ASP.NET Core 运行时,因为它同时包括 .NET Core 和 ASP.NET Core 运行时。

详情参考官网文档:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos

第一步:安装 Nginx

centos系统不像 ubuntu系统,可以直接install安装,需要先添加源:

sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

上图表示添加成功,接下来执行安装命令

sudo yum install -y nginx

安装完毕:

启动 Nginx 服务

sudo systemctl start nginx.service

启动后通过下边脚本验证是否安装成功,这里的IP地址就是你centos系统的ip地址,怎么查看ip地址可以查看前边章节

curl http://172.18.237.116/

出现以下内容说明安装成功。

附上一个参考文档:https://www.cnblogs.com/tenghao510/p/11990353.html

第二步: 安装 .NET Core Runtimes 运行时

#安装 .NET 之前,请运行以下命令,注册 Microsoft 密钥。安装必需的依赖项, 打开终端并运行以下命令:

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

#安装 .NET Core 运行时

sudo yum install aspnetcore-runtime-3.1

到此,地基打完了!

接下来开始正文,编译你.net项目,并添加docker支持,项目右键,选择添加docker 支持(这一部分操作必须)

然后选择 linux,主要是为了发布到 centos 上

确定后,项目中会多了一个 Dockerfile 文件

默认里面内容是:

#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/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80 FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["myAPI/myAPI.csproj", "myAPI/"]
RUN dotnet restore "myAPI/myAPI.csproj"
COPY . .
WORKDIR "/src/myAPI"
RUN dotnet build "myAPI.csproj" -c Release -o /app/build FROM build AS publish
RUN dotnet publish "myAPI.csproj" -c Release -o /app/publish FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "myAPI.dll"]

实际上,生产环境只需要以下内容就可以了。

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
COPY . /app
EXPOSE 80
ENTRYPOINT ["dotnet", "myAPI.dll"]

解释:

EXPOSE 80 是指这个容器对外暴露的端口;

WORKDIR /app  是容器的工作目录;

COPY . /app  是指复制当前目录(其中.即代表当前目录)到容器中的/app目录下;

ENTRYPOINT  指定容器的运行对象

右键项目-->发布-->配置发布内容

配置内容:部署模式选择 “依赖框架”,运行时选择 linux-x64,点击,保存--发布

发布成功之后,通过软件Xftp 将项目上传到服务器上

在centOS服务根目录创建一个项目文件夹,存放要上传的项目,

通过Xftp很方便的就可以完成,右键--新建文件夹:netcoredemo,将左边文件上传即可

发布后的项目不包含 Dockerfile,需要单独上传,将Dockerfile也上传到项目netcoredemo文件夹中

通过命令 ls 验证是否上传成功,如下图所示,项目已经上传成功

现在项目上传到服务器了,接下来就是部署到Docker中!

感觉篇幅有点儿长了,所以打算放到下一节中演示!

Docker学习笔记之-部署.Net Core 3.1项目到Docker容器,并使用Nginx反向代理(CentOS7)(一)的更多相关文章

  1. Docker学习笔记之--.Net Core项目容器连接mssql容器(环境:centos7)

    前一节演示在docker中安装mssql,地址:Docker学习笔记之--安装mssql(Sql Server)并使用Navicat连接测试(环境:centos7) 本节演示 .Net Core项目容 ...

  2. Docker学习笔记之--安装mssql(Sql Server)并使用Navicat连接测试(环境:centos7)

    前一节演示如何使用Nginx反向代理 .net Core项目容器,地址:Docker学习笔记之-部署.Net Core 3.1项目到Docker容器,并使用Nginx反向代理(CentOS7)(二) ...

  3. Docker学习笔记之--.Net Core应用容器通过网桥连接Redis容器(环境:centos7)

    上节演示通过应用容器连接sql server容器,连接:Docker学习笔记之--.Net Core项目容器连接mssql容器(环境:centos7) 本节演示安装 redis容器,通过网桥连接 先决 ...

  4. Docker学习笔记 - Docker容器内部署redis

    Docker学习笔记(2-4)Docker应用实验-redist server 和client的安装使用 一.获取redis容器(含客户端和服务端) 二.创建服务端容器 1.在终端A中运行redis- ...

  5. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...

  6. docker~学习笔记索引

    回到占占推荐博客索引 使用docker也有段时间了,写了不少文章与总结,下面把它整理个目录出来,方便大家去学习与检索! docker~学习笔记索引 docker~linux下的部署和基本命令(2017 ...

  7. Docker学习笔记 — Docker私有仓库搭建

    Docker学习笔记 — Docker私有仓库搭建   目录(?)[-] 环境准备 搭建私有仓库 测试 管理仓库中的镜像 查询 删除 Registry V2   和Mavan的管理一样,Dockers ...

  8. Docker 学习笔记一

    Docker 学习笔记一 1.Docker是什么?         Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源.让开发者打包他们的应用以及依赖包到一 ...

  9. docker学习笔记(3)- 镜像

    简介 在docker学习笔记(1)- 架构概述一节中可以看到镜像是docker三大组件之一,可以将Docker镜像类比为虚拟机的模版. 镜像由多个层组成,每层叠加之后从外部看就像一个独立的对象,镜像的 ...

随机推荐

  1. spring boot 源码之SpringBootExceptionReporter

    SpringBootExceptionReporter 用户自定义异常处理回调接口. public interface SpringBootExceptionReporter { boolean re ...

  2. MybatisPlus根据模板生成器代码

    导读 网上的代码生成器,都不是自己想要的,今天下午研究了下,可以使用mybatisplus自定义模板,根据模板生成相应的代码,可以根据需求,改造相应模板即可.代码已上传github/百度云. 项目结构 ...

  3. Spring学习(四)IOC详解

    一.简介 概念:控制反转是一种通过描述(在 Java 中可以是 XML 或者注解)并通过第三方(Spring)去产生或获取特定对象的方式.(被动创建) 优势: ① 降低对象之间的耦合 ② 我们不需要理 ...

  4. Oracle学习(九)存过、游标、RECORD整合

    一.代码 /*1.定义存过*/ CREATE OR REPLACE PROCEDURE PRO_RE_USER_ORD_GOODS( --NOW_DATE格式:YYYYMMDD 如:20190801( ...

  5. 关于kafka中consumer subscribe与asssign的理解

    kafka中consumer subscribe与asssign的理解: https://blog.csdn.net/weixin_34332905/article/details/91392030

  6. Mysql的ONLY_FULL_GROUP_BY

    今天在测试环境遇到一个问题,本地测试是没有问题,在测试环境sql报错了: nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntax ...

  7. 项目里出现两个配置类继承WebMvcConfigurationSupport时,为什么只有一个会生效(源码分析)

    为什么我们的项目里出现两个配置类继承WebMvcConfigurationSupport时,只有一个会生效.我在网上找了半天都是说结果的,没有人分析源码到底是为啥,博主准备讲解一下,希望可以帮到大家! ...

  8. IIS目录浏览模式打开文件还是无法下载

    写在前面的话 IIS已经设置目录浏览启用,且可以正常访问到文件,说明这些设置没问题,但是点击文件进行下载时,却提示无法下载,文件不存在等等,有的又可以,一顿操作后发现,原来是文件类型没有包含在MIME ...

  9. 随机梯度下降法(Stochastic gradient descent, SGD)

    BGD(Batch gradient descent)批量梯度下降法:每次迭代使用所有的样本(样本量小)    Mold 一直在更新 SGD(Stochastic gradientdescent)随机 ...

  10. Python练习题 038:Project Euler 010:两百万以内所有素数之和

    本题来自 Project Euler 第10题:https://projecteuler.net/problem=10 # Project Euler: Problem 10: Summation o ...