我想把我的程序放在Docker容器中。但是,我的项目有一个h2数据库,它在浏览器中项目开始时打开控制台。因此,启动容器时出现错误:打开浏览器打开http://172.17.0.2:8082?key=9cfa612432aa32f89b955f102b129e4b8123dcec3f9841e74c6bd5e319f3a3a5地址失败:浏览器检测失败,java属性
'h2.browser'和环境变量BROWSER未设置为浏览器可执行文件。
因此,我决定采用简单的方法禁用h2控制台,因为我还没有使用它。按照chat-gpt-3的建议,我尝试使用application.properties文件禁用它:
spring.datasource.url=jdbc:h2:mem:default
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.DriverClassName=org.h2.Driver
spring.h2.console.enabled=false
spring.h2.console.path=/myh2console
我创建了一个jar工件,并使用以下命令启动它:java -jar out/artifacts/KameleoonTestTask_jar/KameleoonTestTask.jar
但它并没有带来预期的结果。当我启动工件时,一个新的选项卡在浏览器中打开,带有h2数据库窗口,并提示我输入名称和密码,h2数据库控制台图标出现在托盘的底部。
然后按照他的其他建议,我尝试通过拒绝使用SpringSecurity访问浏览器来禁用控制台:
package project.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.Enable Web Security;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter
{
@Override
protected void configure(Http Security http) throws Exception
{
http.authorizerequest()
.antMatchers("/h2-console/*").denyAll()
.and().headers().frameOptions().disable();
}
}
控制台不断弹出。
同样值得注意的是,在Idea中正常启动应用程序时,控制台不会出现。只有当我用上面的命令运行工件时,它才会出现。我手动运行工件来检查程序在docker容器中的行为。
如果有人知道如何禁用此控制台,请帮助。
1条答案
按热度按时间xyhw6mcr1#
这个问题已经解决了。我为此做了什么:
1.我安装了最新的30天试用版的想法终极
1.在pom.xml中,我删除了所有的插件,并添加了这个:
org.springframework.boot
spring-boot-maven插件
1.这次我没有使用Idea(File > ProjectStructure> + JARfrommodules with dependencies)构建JAR工件。现在我用Maven生成了它(从右边的“Toolbar”进入Maven >“name of your project”> Lifecycle > package)
1.现在工件在目标文件夹中,当我使用“java -jar...”运行它时,h2 database控制台的登录窗口不再在浏览器中打开
1.当然,为了让Docker容器使用新的工件,我更改了Makefile中的路径,并基于新的JAR文件重新创建了镜像和容器。
现在,在Docker文件或jar工件本身的启动过程中,H2控制台窗口不会在浏览器中弹出。