进入docker内部后,使用ps aux可以查看当前的进程情况:

可以看到,halo在docker中运行的主要服务为:
java -Dreactor.schedulers.defaultBoundedElasticOnVirtualThreads=true org.springframework.boot.loader.launch.JarLauncher --spring.r2dbc.url=r2dbc:pool:mysql://mysql:3306/halo_rksakh --spring.r2dbc.username=halo_hXG8K4 --spring.r2dbc.password=halo_kmRJ55 --spring.sql.init.platform=mysql --halo.external-url=http://localhost:8080看不懂java或者spring架构,没有经验,这没关系,我们可以先上ls proc目录,找ps aux下这个进程对应的文件系统关联。
ls -l /proc/[pid]/cwd;可以查看当前主命令执行时的根目录

ls -l /proc/[pid]/exe;可以查看当前进程的主bin入口文件

cat /proc/[pid]/cmdline;可以查看执行时的完整命令

注意到,java命令本身可以直接了当的执行class类。
springboot相关的参数中,似乎给定了url域名解析的直观映射关系:
--halo.external-url=http://localhost:8080
--spring.r2dbc.url=r2dbc:pool:mysql://mysql:3306/halo_rksakh
--spring.r2dbc.username=halo_hXG8K4
--spring.r2dbc.password=halo_kmRJ55
--spring.sql.init.platform=mysql
从面向对象的角度来说,这是halo这个spring架构尝试将不同的模块,比如用户名、密码、本地反向代理位置、数据库等内容单独模块化。
可以说,通过docker中对应软件的调试与观摩,基本确定,通过spring本身加参数的方法实现域名反向解析不怎么现实。
还是需要上nginx。