栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

最新Centos7 + .Net6 + Docker 配置镜像发布详解

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

最新Centos7 + .Net6 + Docker 配置镜像发布详解

    今天带给大家一篇文章,想大家介绍下在Centos7下,如何在docker环境部署一个简单的基于.Net6的.NetCore应用,也就是打包项目镜像,并在Linux下使用打包的镜像运行一个容器。

一 环境准备 1.1虚拟机

我们准备一台Centos虚拟机,我这里是7.6.虚拟机安装我就不介绍了,可以参考我的一篇文章

大数据分析学习第一课 准备虚拟机环境来了解下虚拟机的配置

下面的虚拟机可以看到,没有.Net环境

1.2 安装SdK

参考我的博文

1.3 新建项目

这里我们选择webapi

项目建好后如下,会默认一个天气信息的控制器

 我们稍微修改下,加一个run by docker标识

namespace DockerSample.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

        private readonly ILogger _logger;

        public WeatherForecastController(ILogger logger)
        {
            _logger = logger;
        }

        [HttpGet(Name = "GetWeatherForecast")]
        public IEnumerable Get()
        {
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)] + "【run by docker】"
            })
            .ToArray();
        }
    }
}

 项目运行后,会打开swagger文档,是webapi内置好的,我们测试一下,会看到结果

 可以看到我们加的标识了

 1.4 配置docker

我们右键项目,添加=》添加Docker支持,这里选Linux

 确定后会生成一个Dockerfile文件,我们调整下内容

 这里我给出了每行配置的说明

# 环境运行时基础镜像
FROM mcr.microsoft.com/dotnet/aspnet:6.0
#将当前目录内容 copy到镜像目录
COPY .  /DockerSample
#设置工作目录
WORKDIR /DockerSample
#对外暴露端口 
#(注:EXPOSE并不会让容器的端口访问到主机。
#要使其可访问,需要在docker run运行容器时通过-p来发布这些端口,
#或通过-P参数来发布EXPOSE导出的所有端口)
EXPOSE 80
EXPOSE 443
#运行镜像入口命令和可执行文件名称
ENTRYPOINT ["dotnet", "DockerSample.dll"]
 1.5 发布项目

因为我主机是win10,没有开启Hyper-V,所以我把项目发布后,上传到linux打包镜像,发布流程就按普通的web项目,发布到一个文件夹就好

发布前注意,修改下 Dockerfile的属性,设置为始终复制,这样就不用手动复制了


 1.6生成docker镜像

我们把刚才发布目录上传到前面准备的Linux服务器

cd进入该目录

 现在开始生成镜像,我们先看下docker已有镜像列表,等下可以对比新生成镜像

 接下来,执行

docker build -t dockersample-image/1.0 -f Dockerfile .

(注意 . 是必须的,代表当前目录)

 再查看下镜像,可以看到镜像已经生成成功了

 生成的镜像,可以push到国内的镜像仓库,或者本地局域网的私服仓库,用于测试、生产等环境的发布使用

1.7 运行容器

有了镜像,我们就可以使用了

执行 

docker run -d -p 8001:80 --name dockersample1 dockersample-image/1.0

我们浏览器访问服务器的8001端口 http://node2:8001/,发现报404了

 仔细检查了发布流程,发现没问题,最后检查配置发现了问题,原来默认只有在调试环境,才会开启Swagger文档

 这样的话,我们就直接访问接口地址吧,http://node2:8001/WeatherForecast,数据出来了

 我们再新开一个容器试试

docker run -d -p 8002:80 --name dockersample2 dockersample-image/1.0

  访问下接口地址8002,http://node2:8002/WeatherForecast,数据也出来了

总结
        感谢能看到这里的朋友

        本次的分享就到这里,猫头鹰数据致力于为大家分享技术干货

        如果以上过程中出现了任何的纰漏错误,烦请大佬们指正

        受益的朋友或对技术感兴趣的伙伴记得点赞关注支持一波

        也可以扫描二维码或搜索关注我的微信公众号【猫头鹰数据分析】,留言交流

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/984130.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号