我有一个基本的 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,
- 奥莱
这就是解决方案。首先,我添加了数据库 docker build 目录,其中包含Dockerfile
。然后我更新Dockerfile
与以下行:
ADD customerdb.h2.db /tmp/customerdb.h2.db
应用程序现在可以连接到容器内的数据库。请注意卷中包含的数据库/tmp/
仅限于容器,与我复制到的数据库不同/tmp/
我的工作站上的目录。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)