You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring+PostgreSQL+Docker应用启动报错:不支持postgresql数据库名

Spring+PostgreSQL+Docker应用启动错误:Database name postgresql not supported

问题背景

搭建了Spring+PostgreSQL+Docker组合应用,相关配置如下:

application.properties

spring.datasource.password=rfnfdfcbz123!
spring.datasource.username=postgres
spring.datasource.driver-class-name=org.testcontainers.jdbc.ContainerDatabaseDriver
spring.datasource.url=jdbc:tc:postgresql:11.1:///mesh_group
spring.jpa.show-sql=true spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect

Dockerfile

FROM openjdk:11
ADD /target/DockerLearn-0.0.1-SNAPSHOT.jar backend123.jar
ENTRYPOINT ["java","-jar","/backend123.jar"]

docker-compose.yml

version: '3'

services:
  postgres:
    image: 'postgres:11.1'
    container_name: 'java-postgres124'
    environment:
      - 'POSTGRES_USER=postgres'
      - 'POSTGRES_PASSWORD=rfnfdfcbz123!'
      - 'POSTGRES_DB=mesh_group'

app:
  build: ./
  container_name: 'java-app124'
  ports:
    - 8000:8080 

运行java-app124容器时出现错误:

java.lang.UnsupportedOperationException: Database name postgresql not supported
at org.testcontainers.jdbc.ContainerDatabaseDriver.connect(ContainerDatabaseDriver.java:106) ~[jdbc-1.17.3.jar!/:na]
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-4.0.3.jar!/:na]
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:364) ~[HikariCP-4.0.3.jar!/:na]
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206) ~[HikariCP-4.0.3.jar!/:na]
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476) ~[HikariCP-4.0.3.jar!/:na]
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) ~[HikariCP-4.0.3.jar!/:na]
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) ~[HikariCP-4.0.3.jar!/:na]
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-4.0.3.jar!/:na]
at 

错误原因

  1. 配置冲突:同时使用了Testcontainers的JDBC驱动(自动启动数据库容器)和docker-compose手动启动的PostgreSQL容器,两者逻辑矛盾。
  2. 容器内运行限制:Testcontainers的JDBC驱动需要访问Docker daemon来启动数据库容器,但应用本身运行在Docker容器内,默认无法直接访问宿主机的Docker环境,导致驱动无法识别并启动PostgreSQL容器,抛出该错误。

解决办法

方案一:连接docker-compose中的PostgreSQL容器(生产/部署场景推荐)

修改application.properties,移除Testcontainers相关配置,直接连接到docker-compose中定义的PostgreSQL服务:

spring.datasource.password=rfnfdfcbz123!
spring.datasource.username=postgres
# 替换为PostgreSQL官方驱动
spring.datasource.driver-class-name=org.postgresql.Driver
# 使用docker-compose服务名作为数据库主机(同一网络内可直接通过服务名访问)
spring.datasource.url=jdbc:postgresql://postgres:5432/mesh_group
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect

同步更新docker-compose.yml,添加服务依赖确保应用在PostgreSQL启动后再启动:

version: '3'

services:
  postgres:
    image: 'postgres:11.1'
    container_name: 'java-postgres124'
    environment:
      - 'POSTGRES_USER=postgres'
      - 'POSTGRES_PASSWORD=rfnfdfcbz123!'
      - 'POSTGRES_DB=mesh_group'
    # 可选:暴露端口到宿主机,方便本地调试
    ports:
      - 5432:5432

  app:
    build: ./
    container_name: 'java-app124'
    ports:
      - 8000:8080
    # 确保应用服务在PostgreSQL服务启动后再启动
    depends_on:
      - postgres

注意:确保项目依赖中包含PostgreSQL驱动包,Maven依赖示例:

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <scope>runtime</scope>
</dependency>

方案二:继续使用Testcontainers(仅测试场景适用)

如果需要在测试场景中用Testcontainers自动管理数据库,需做以下调整:

  1. 删除docker-compose.yml中的postgres服务
  2. 配置应用容器访问宿主机的Docker daemon(需挂载宿主机Docker socket,存在安全风险,不推荐生产使用):
    修改docker-compose.yml的app服务:
    app:
      build: ./
      container_name: 'java-app124'
      ports:
        - 8000:8080
      volumes:
        - /var/run/docker.sock:/var/run/docker.sock
    
  3. 保留application.properties中的Testcontainers配置

内容的提问来源于stack exchange,提问作者Землянский Григорий

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:50:30