在 tomcat docker 镜像中找不到 JDBC 驱动程序

问题描述 投票:0回答:1

我有一个 Spring 框架 Web 应用程序,我正在尝试使用 Tomcat 和 docker 映像将其部署到生产环境中。

我搜索了这个错误,发现有两个可能的错误。第一个是数据库 url 格式不正确,我检查了我的,它是正确的。数据库网址是这样的

jdbc:postgresql://localhost:5432/postgres?currentSchema=volga&stringtype=unspecified

第二个可能的问题是Postgres db库文件未包含在war文件中。因此,我在正在运行的 tomcat 容器内运行 bash 命令,并检查 oracle 库文件是否存在于 war 文件中。我还尝试将 Postgres 库复制到 tomcat lib 文件夹中,但它不起作用。

我使用最少的代码创建了一个存储库来重现错误。 https://github.com/ap30422/spring-boot.git

请克隆存储库并将目录更改为

compete
目录。 运行
mvn clean install package
来构建应用程序。 然后运行
Docker build .
来构建图像。 使用
docker run #insert_image_id. -p 8080:8080

运行 Docker 镜像

如果您检查http://localhost:8080,您将在docker容器日志中看到

Down
文本和错误日志。

java spring postgresql docker tomcat
1个回答
0
投票

您当前遇到的问题可能是由于 Spring Boot 应用程序或 Tomcat Docker 映像中缺少 JDBC 驱动程序或配置错误造成的。您可以按照以下几个步骤来解决并可能解决该问题:

1。验证依赖管理。

确认 PostgreSQL JDBC 驱动程序作为依赖项包含在您的 pom.xml 文件中。如果尚不存在,请添加以下行

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>your_postgresql_version</version>
</dependency>

2。检查 Spring Boot 中的类路径。

虽然 Spring Boot 应自动将 JDBC 驱动程序加载到类路径中,但您可以在 application.properties 或 application.yml 文件中显式指定驱动程序类

spring.datasource.driver-class-name=org.postgresql.Driver

3.验证数据库连接 URL

确保数据库连接URL正确。如果数据库位于不同的服务器上,请使用适当的主机名或 IP 地址。另外,确认 Tomcat 可以解析“localhost”(如果它是 URL 的一部分)。

4。 Docker 镜像构建

创建 Docker 映像时,请确保将 PostgreSQL JDBC 驱动程序复制到映像中的正确位置。例如,您可以将其复制到“lib”文件夹。按如下方式修改您的 Dockerfile:

FROM tomcat:latest
COPY target/spring-boot.war /usr/local/tomcat/webapps/
COPY target/dependency/*.jar /usr/local/tomcat/lib/

通过执行这些步骤,您应该能够解决与 Spring Boot 应用程序和 Tomcat Docker 映像中的 JDBC 驱动程序和配置相关的潜在问题。

© www.soinside.com 2019 - 2024. All rights reserved.