分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

asp.net core 发布到 docker 容器时文件体积过大及服务端口的配置疑问

发布时间:2023-09-06 02:09责任编辑:傅花花关键词:配置

在 asp.net core 发布时,本人先后产生了3个疑问。

1、发布的程序为什么不能在docker容器中运行

当时在window开发环境中发布后,dotnet xxx.dll可以正常运行;但放入docker容器后就报 *.*.deps.json not found 的错误。后根据下面的文章解决了问题:https://www.cnblogs.com/mahidol/p/9064943.html

根据上述文章的结论,因为发布时认为运行的环境中包含必备的库,所以仅发布了项目中的代码与资源。

我的dockerfile用的基础镜像是:microsoft/dotnet:2.1.2-aspnetcore-runtime,因此asp.net core runtime是完整的,所以之前发布应该缺少linux系统上必备的文件。因此重设发布选项,如下图:

现在发布的程序在docker容器中运行的很好?。

2、发布的文件体积问题

按照一个问题的解决思路,新建一个asp.net core项目进行发布设置,如下:

仅一个简单示例的程序,发布出来就有90M。有点太恐怖了??,这次发布的程序应该能够直接在没有asp.net runtime的linux机器上运行(本人没有测试)。

3、程序端口配置

程序运行在linux或docker容器中,需要我们有明确的端口。当初asp.net core 默认5000的端口,我在容器中测试为监听80端口。根据网上的资料,修改端口配置发现无效,修改步骤如下(哪位朋友修改成功了,请告诉我一下,谢谢):

新建hosting.json

{ ???"server.urls": "http://localhost:9000;"}

修改Program.cs

public class Program ???{ ???????public static void Main(string[] args) ???????{ ???????????var config = new ConfigurationBuilder() ???????????????.SetBasePath(Directory.GetCurrentDirectory()) ???????????????.AddJsonFile("hosting.json", optional: true) ???????????????.Build(); ???????????BuildWebHost(args, config).Run(); ???????} ???????public static IWebHost BuildWebHost(string[] args, IConfigurationRoot config) => ???????????WebHost.CreateDefaultBuilder(args) ???????????????.UseConfiguration(config) ???????????????.UseStartup<Startup>() ???????????????.Build(); ???}

最后严重吐槽2下MS

1、Controller中有如下代码:

public class TestController : Controller ???{ ???????public IActionResult Home() ???????{ ???????????ViewBag.Px = new { Name = "123", Age = 20 }; ???????????return View(); ???????} ???}

view代码如下:

@{ ???ViewData["Title"] ="Home Page";}@ViewBag.Px.Name

直接出错:

2、View中输出中文

Controller中有如下代码:

public class TestController : Controller ???{ ???????public IActionResult Home() ???????{ ???????????ViewBag.Txt = "abc";//"你好"; ???????????return View(); ???????} ???}

view代码如下:

@{ ???ViewData["Title"] ="Home Page";}<script> ???var x = "@ViewBag.Txt"; ???alert(x);</script>

"abc"与"你好"输出的结果:

asp.net core 发布到 docker 容器时文件体积过大及服务端口的配置疑问

原文地址:https://www.cnblogs.com/dw039/p/9454308.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved