1Panel运行的.net程序无法读取系统字体(因为使用了docker)

问题来源

我之前都是使用的宝塔面板,之前我也部署过我的程序,就没有什么问题,但是上次我部署我的程序的时候,就提示无法找到字体Arial。

我的程序中使用该字体生成验证码。

我多次安装了微软的字体包,但是依旧没有效果。

直到今天,我再次配置一个新的ubuntu系统。

(上一个ubuntu系统已经被我改为windows系统使用了)

缘故

今天又重试了之前的操作,依旧是不行。但我想到了1panel可能是因为使用了docker的缘故。.net 程序跑在docker中,默认的操作当然读取不到系统的文件。

事实上,就是这个缘故。

我在系统上直接执行,没有任何问题。

解决方案

虽然,有的解决方案是说,让使用FontCollection 添加系统的字体路径,但是我还是不想这么做。

于是我还是使用了之前使用的supervisor来配置一个进程守护。

supervisor的使用可以参照Linux进程守护---Supervisor(ubuntu)_linux守护进程工具-CSDN博客

我之前配置的时候参照的这个,这次我问的gpt。

给我的配置中少了一个参数。

directory

导致程序无法正常运行,总是提示在95行有问题。

该路径是程序读取文件的相对路径。没有设置这个,程序读取 appsetting.production.json文件就会出现问题。

基本使用

Supervisor

一个用 Python 写的进程管理工具,专门用来管理和监控多个后台进程。它可以自动重启程序,支持日志管理,配置简单,非常适合部署多个程序。

安装:

复制代码
  sudo apt install supervisor

配置示例

  • /etc/supervisor/conf.d/myapp.conf):

    复制代码
    [program:mydotnetapp]
    command=/usr/bin/dotnet /path/to/yourapp.dll 
    directory=/path/to/workingdir
    autostart=true
    autorestart=true
    stderr_logfile=/var/log/mydotnetapp.err.log
    stdout_logfile=/var/log/mydotnetapp.out.log
    user=youruser

    我的程序的配置最终如下

复制代码
  [program:ai_server]
  command=dotnet /webs/Turbo-Auth.dll
  directory=/webs/
  autostart=true
  autorestart=true
  stderr_logfile=/var/log/ai_server.err.log
  stdout_logfile=/var/log/ai_server.out.log
  user=root

启动和管理:

复制代码
  sudo supervisorctl reread
  sudo supervisorctl update

查询状态

复制代码
sudo supervisorctl status
相关推荐
E_ICEBLUE6 小时前
PPT 批量转图片:在 Web 预览中实现翻页效果(C#/VB.NET)
c#·powerpoint·svg
JQLvopkk8 小时前
C# 轻量级工业温湿度监控系统(含数据库与源码)
开发语言·数据库·c#
wxin_VXbishe10 小时前
C#(asp.net)学员竞赛信息管理系统-计算机毕业设计源码28790
java·vue.js·spring boot·spring·django·c#·php
bugcome_com1 天前
零基础入门C#:一篇搞懂核心知识点
c#
程序员敲代码吗1 天前
如何通过命令行启动COMSOL的参数化、批处理和集群扫描
java·c#·bash
缺点内向1 天前
C#: 告别繁琐!轻松移除Word文档中的文本与图片水印
c#·自动化·word·.net
喵叔哟1 天前
06-ASPNETCore-WebAPI开发
服务器·后端·c#
2501_930707781 天前
使用 C# .NET 从 PowerPoint 演示文稿中提取背景图片
c#·powerpoint·.net
初级代码游戏1 天前
套路化编程 C# winform 自适应缩放布局
开发语言·c#·winform·自动布局·自动缩放
大空大地20261 天前
流程控制语句--switch多分支语句使用、while循环语句的使用、do...while语句、for循环
c#