gpt4 book ai didi

java - 连接到 Docker 容器中的 H2 数据库

转载 作者:行者123 更新时间:2023-11-30 03:23:19 25 4
gpt4 key购买 nike

我有一个基本的 Spring Boot Data JPA 项目。我要连接的 h2 数据库位于 /tmp/customerdb.h2.db 。使用 mvn spring-boot:run 运行应用程序时一切正常。应用程序连接到数据库,添加记录,并将添加的记录打印到控制台。

然后我构建一个 docker 容器并运行它。 docker 文件如下所示:

FROM java:8
VOLUME /tmp
ADD jpa-docker-1.0.0.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar",/app.jar"]

当我运行容器时,出现以下错误:

2015-06-12 19:25:57.200  WARN 1 --- [           main] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 42102, SQLState: 42S02
2015-06-12 19:25:57.200 ERROR 1 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : Table "CUSTOMER" not found; SQL statement:

看来应用程序无法看到数据库。连接 URL 如下所示: spring.datasource.url=jdbc:h2:/tmp/customerdb

正如我所提到的,在 docker 容器外部运行时效果很好。我假设 Dockerfile 中的行 VOLUME /tmp创建/tmp容器内的目录及其包含的所有文件,以便数据库可见,但这似乎不起作用。想法?

TIA,- 奥莱

最佳答案

这就是解决方案。首先,我添加了包含 Dockerfile 的数据库 docker 构建目录。然后我使用以下行更新 Dockerfile:

ADD customerdb.h2.db  /tmp/customerdb.h2.db

应用程序现在可以连接到容器内的数据库。请注意,卷 /tmp/ 中包含的数据库仅限于容器,并且与我复制到工作站上的 /tmp/ 目录中的数据库不同。

关于java - 连接到 Docker 容器中的 H2 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30810858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com