我谷歌搜索,百度搜索找了半天没有找到任何部署方案终于找到了😄😄😄😄😄

    Maverick 你好,我已经按照楼主给的操作方法搭建Halo但还是无法连接Halo,因为我使用的是宿主数据库

      InvoLve1 root@VM-0-16-debian:/www/wwwroot/Web/Halo# docker-compose up -d
      [+] Running 2/2
      ⠿ Network halo_default Created 0.1s
      ⠿ Container halo Started 0.7s
      root@VM-0-16-debian:/www/wwwroot/Web/Halo#

        InvoLve1
        alo | 2023-02-19T22:00:24.882+08:00 WARN 7 --- [ main] onfigReactiveWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'r2dbcScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/R2dbcInitializationConfiguration.class]: Failed to execute database script
        halo | 2023-02-19T22:00:24.884+08:00 INFO 7 --- [ main] r.h.a.e.c.DefaultControllerManager : Shutting down 0 controllers...
        halo | 2023-02-19T22:00:24.885+08:00 INFO 7 --- [ main] r.h.a.e.c.DefaultControllerManager : Shutdown 0 controllers.
        halo | 2023-02-19T22:00:24.885+08:00 INFO 7 --- [ main] r.h.a.e.controller.DefaultController : Disposing controller garbage-collector-controller
        halo | 2023-02-19T22:00:24.886+08:00 INFO 7 --- [ main] r.h.a.e.controller.DefaultController : Controller garbage-collector-controller is disposed
        halo | 2023-02-19T22:00:24.886+08:00 WARN 7 --- [pool-5-thread-1] run.halo.app.metrics.VisitLogWriter : VisitLogWrite thread [pool-5-thread-1] interrupted
        halo | 2023-02-19T22:00:24.911+08:00 INFO 7 --- [ main] .s.b.a.l.ConditionEvaluationReportLogger :
        halo |
        halo | Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
        halo | 2023-02-19T22:00:24.927+08:00 ERROR 7 --- [ main] o.s.boot.SpringApplication : Application run failed
        halo |
        halo | org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'r2dbcScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/R2dbcInitializationConfiguration.class]: Failed to execute database script
        halo | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1751) ~[spring-beans-6.0.4.jar:6.0.4]
        halo | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) ~[spring-beans-6.0.4.jar:6.0.4]
        halo | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) ~[spring-beans-6.0.4.jar:6.0.4]
        halo | at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.0.4.jar:6.0.4]
        halo | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.4.jar:6.0.4]
        halo | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.0.4.jar:6.0.4]
        halo | at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.4.jar:6.0.4]
        halo | at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:961) ~[spring-beans-6.0.4.jar:6.0.4]
        halo | at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:915) ~[spring-context-6.0.4.jar:6.0.4]
        halo | at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584) ~[spring-context-6.0.4.jar:6.0.4]
        halo | at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:66) ~[spring-boot-3.0.2.jar:3.0.2]
        halo | at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730) ~[spring-boot-3.0.2.jar:3.0.2]
        halo | at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:432) ~[spring-boot-3.0.2.jar:3.0.2]
        halo | at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) ~[spring-boot-3.0.2.jar:3.0.2]
        halo | at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:150) ~[spring-boot-3.0.2.jar:3.0.2]
        halo | at run.halo.app.Application.main(Application.java:28) ~[classes/:2.2.0]
        halo | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
        halo | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
        halo | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
        halo | at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
        halo | at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[application/:na]
        halo | at org.springframework.boot.loader.Launcher.launch(Launcher.java:95) ~[application/:na]
        halo | at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[application/:na]
        halo | at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) ~[application/:na]
        halo | Caused by: org.springframework.r2dbc.connection.init.UncategorizedScriptException: Failed to execute database script
        halo | at org.springframework.r2dbc.connection.init.DatabasePopulator.lambda$populate$4(DatabasePopulator.java:65) ~[spring-r2dbc-6.0.4.jar:6.0.4]
        halo | at reactor.core.publisher.Mono.lambda$onErrorMap$27(Mono.java:3749) ~[reactor-core-3.5.2.jar:3.5.2]
        halo | at reactor.core.publisher.Mono.lambda$onErrorResume$29(Mono.java:3839) ~[reactor-core-3.5.2.jar:3.5.2]
        halo | at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:94) ~[reactor-core-3.5.2.jar:3.5.2]
        halo | at reactor.core.publisher.MonoUsingWhen$ResourceSubscriber.onError(MonoUsingWhen.java:203) ~[reactor-core-3.5.2.jar:3.5.2]
        halo | at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106) ~[reactor-core-3.5.2.jar:3.5.2]
        halo | at reactor.core.publisher.Operators.error(Operators.java:198) ~[reactor-core-3.5.2.jar:3.5.2]
        halo | at reactor.core.publisher.MonoError.subscribe(MonoError.java:53) ~[reactor-core-3.5.2.jar:3.5.2]
        halo | at reactor.core.publisher.Mono.subscribe(Mono.java:4444) ~[reactor-core-3.5.2.jar:3.5.2]
        halo | at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) ~[reactor-core-3.5.2.jar:3.5.2]
        halo | at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106) ~[reactor-core-3.5.2.jar:3.5.2]
        halo | at reactor.core.publisher.FluxRetry$RetrySubscriber.onError(FluxRetry.java:95) ~[reactor-core-3.5.2.jar:3.5.2]
        halo | at reactor.core.publisher.MonoFlatMap$FlatMapMain.onError(MonoFlatMap.java:180) ~[reactor-core-3.5.2.jar:3.5.2]
        halo | at reactor.pool.AbstractPool$Borrower.fail(AbstractPool.java:475) ~[reactor-pool-1.0.0.jar:1.0.0]
        halo | at reactor.pool.SimpleDequePool.lambda$drainLoop$9(SimpleDequePool.java:429) ~[reactor-pool-1.0.0.jar:1.0.0]
        halo | at reactor.core.publisher.FluxDoOnEach$DoOnEachSubscriber.onError(FluxDoOnEach.java:186) ~[reactor-core-3.5.2.jar:3.5.2]
        halo | at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onError(FluxMapFuseable.java:340) ~[reactor-core-3.5.2.jar:3.5.2]
        halo | at reactor.core.publisher.MonoCompletionStage$MonoCompletionStageSubscription.apply(MonoCompletionStage.java:114) ~[reactor-core-3.5.2.jar:3.5.2]
        halo | at reactor.core.publisher.MonoCompletionStage$MonoCompletionStageSubscription.apply(MonoCompletionStage.java:64) ~[reactor-core-3.5.2.jar:3.5.2]
        halo | at java.base/java.util.concurrent.CompletableFuture.uniHandle(Unknown Source) ~[na:na]
        halo | at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(Unknown Source) ~[na:na]
        halo | at java.base/java.util.concurrent.CompletableFuture.postComplete(Unknown Source) ~[na:na]
        halo | at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(Unknown Source) ~[na:na]
        halo | at com.github.jasync.sql.db.util.FutureUtilsKt.tryFailure(FutureUtils.kt:21) ~[jasync-pool-2.1.23.jar:na]
        halo | at com.github.jasync.sql.db.pool.TimeoutSchedulerImpl$addTimeout$1$scheduledFuture$1.invoke(TimeoutScheduler.kt:63) ~[jasync-common-2.1.23.jar:na]
        halo | at com.github.jasync.sql.db.pool.TimeoutSchedulerImpl$addTimeout$1$scheduledFuture$1.invoke(TimeoutScheduler.kt:62) ~[jasync-common-2.1.23.jar:na]
        halo | at com.github.jasync.sql.db.pool.TimeoutSchedulerImpl.schedule$lambda-0(TimeoutScheduler.kt:51) ~[jasync-common-2.1.23.jar:na]
        halo | at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:98) ~[netty-common-4.1.87.Final.jar:4.1.87.Final]
        halo | at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:153) ~[netty-common-4.1.87.Final.jar:4.1.87.Final]
        halo | at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[netty-common-4.1.87.Final.jar:4.1.87.Final]
        halo | at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) ~[netty-common-4.1.87.Final.jar:4.1.87.Final]
        halo | at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[netty-common-4.1.87.Final.jar:4.1.87.Final]
        halo | at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:406) ~[netty-transport-classes-epoll-4.1.87.Final.jar:4.1.87.Final]
        halo | at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.87.Final.jar:4.1.87.Final]
        halo | at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.87.Final.jar:4.1.87.Final]
        halo | at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
        halo | Suppressed: java.lang.Exception: #block terminated with an error
        halo | at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:99) ~[reactor-core-3.5.2.jar:3.5.2]
        halo | at reactor.core.publisher.Mono.block(Mono.java:1710) ~[reactor-core-3.5.2.jar:3.5.2]
        halo | at org.springframework.boot.r2dbc.init.R2dbcScriptDatabaseInitializer.runScripts(R2dbcScriptDatabaseInitializer.java:68) ~[spring-boot-3.0.2.jar:3.0.2]
        halo | at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.runScripts(AbstractScriptDatabaseInitializer.java:146) ~[spring-boot-3.0.2.jar:3.0.2]
        halo | at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.applyScripts(AbstractScriptDatabaseInitializer.java:108) ~[spring-boot-3.0.2.jar:3.0.2]
        halo | at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.applySchemaScripts(AbstractScriptDatabaseInitializer.java:98) ~[spring-boot-3.0.2.jar:3.0.2]
        halo | at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.initializeDatabase(AbstractScriptDatabaseInitializer.java:76) ~[spring-boot-3.0.2.jar:3.0.2]
        halo | at org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer.afterPropertiesSet(AbstractScriptDatabaseInitializer.java:66) ~[spring-boot-3.0.2.jar:3.0.2]
        halo | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1797) ~[spring-beans-6.0.4.jar:6.0.4]
        halo | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1747) ~[spring-beans-6.0.4.jar:6.0.4]
        halo | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) ~[spring-beans-6.0.4.jar:6.0.4]
        halo | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) ~[spring-beans-6.0.4.jar:6.0.4]
        halo | at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.0.4.jar:6.0.4]
        halo | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.4.jar:6.0.4]
        halo | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.0.4.jar:6.0.4]
        halo | at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.4.jar:6.0.4]
        halo | at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:961) ~[spring-beans-6.0.4.jar:6.0.4]
        halo | at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:915) ~[spring-context-6.0.4.jar:6.0.4]
        halo | at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584) ~[spring-context-6.0.4.jar:6.0.4]
        halo | at org.springframework.boot.web.reactive.context.ReactiveWebServerApplicationContext.refresh(ReactiveWebServerApplicationContext.java:66) ~[spring-boot-3.0.2.jar:3.0.2]
        halo | at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730) ~[spring-boot-3.0.2.jar:3.0.2]
        halo | at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:432) ~[spring-boot-3.0.2.jar:3.0.2]
        halo | at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) ~[spring-boot-3.0.2.jar:3.0.2]
        halo | at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:150) ~[spring-boot-3.0.2.jar:3.0.2]
        halo | at run.halo.app.Application.main(Application.java:28) ~[classes/:2.2.0]
        halo | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
        halo | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
        halo | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
        halo | at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
        halo | at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[application/:na]
        halo | at org.springframework.boot.loader.Launcher.launch(Launcher.java:95) ~[application/:na]
        halo | at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[application/:na]
        halo | at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) ~[application/:na]
        halo | Caused by: org.springframework.dao.DataAccessResourceFailureException: Failed to obtain R2DBC Connection
        halo | at org.springframework.r2dbc.connection.ConnectionFactoryUtils.lambda$getConnection$0(ConnectionFactoryUtils.java:90) ~[spring-r2dbc-6.0.4.jar:6.0.4]
        halo | at reactor.core.publisher.Mono.lambda$onErrorMap$28(Mono.java:3763) ~[reactor-core-3.5.2.jar:3.5.2]
        halo | at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:94) ~[reactor-core-3.5.2.jar:3.5.2]
        halo | ... 26 common frames omitted
        halo | Caused by: java.util.concurrent.TimeoutException: Operation timeout after it took too long to return (PT5S)
        halo | ... 12 common frames omitted

        Maverick
        还有就是你发的这个错误代码我看不懂,如果按照我这个配置你还是不能访问halo的话!首先需要排除几个问题。
        1.先将mysql的访问权限更改成ALL,就是所有人都可以链接数据库。尝试是否可以打开。
        2.方法1无法解决的话,检查docker-compose.yml是否填写正确。检查数据库名,数据库用户,数据库密码是否正确。
        3.全部正确的话,检查服务器是否放行了8090端口。
        如果还不能访问你就再回复我,我睡醒可以指导你一下。

          InvoLve1 如果是使用宝塔面板安装,请把那个服务器的mysql端口3306和宝塔安全的端口也要放开

            InvoLve1 谢谢hxd,原来是宝塔的那个端口没放开,一直没注意这个问题