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

Scala Play Framework连接PostgreSQL数据库失败求助

解决Play 2.8.2后端连接Docker Compose部署的PostgreSQL时的连接拒绝问题

我来帮你一步步排查解决这个连接拒绝的问题——核心原因其实是Docker Compose容器间的网络访问逻辑,外加一些依赖和启动顺序的小细节,咱们逐个解决:

1. 修正数据库连接地址(最关键的一步)

你现在用的127.0.0.1是指Play后端容器自己的本地回环,而不是宿主机或者PostgreSQL容器的地址!在Docker Compose的默认网络里,每个服务都可以直接用服务名作为主机名来访问,所以你需要把连接字符串改成:

val connection= DriverManager.getConnection("jdbc:postgresql://database:5432/smartmarkt", "postgres", "postgres")

这里的database就是你docker-compose.yml里PostgreSQL服务的名称,Docker会自动把这个名称解析到对应容器的IP地址,这样后端容器就能直接访问到数据库容器了。

2. 确保PostgreSQL驱动依赖正确生效

手动把jar包丢到/lib目录容易出现依赖冲突或者sbt没识别的问题,建议用sbt的依赖管理来配置:
在你的build.sbt里明确添加驱动依赖:

libraryDependencies ++= Seq(
  jdbc, // Play的JDBC支持
  "org.postgresql" % "postgresql" % "42.2.13" // 你用的版本,也可以换成最新稳定版
)

然后运行sbt clean update让sbt重新拉取依赖,之后把/lib目录下的postgresql-42.2.13.jar删掉,避免冲突。

3. 确保数据库完全就绪后再启动后端

depends_on只是保证启动顺序,不保证数据库已经完成初始化可以接受连接。给PostgreSQL服务加上健康检查,让后端等数据库真正就绪后再启动:
修改你的docker-compose.yml:

services: 
  web: 
    build: frontend/ 
    ports: 
      - "80:80" 
    links: 
      - api 
  database: 
    image: "postgres"
    ports: 
      - "5432:5432" 
    environment: 
      - POSTGRES_DB=smartmarkt 
      - POSTGRES_PASSWORD=postgres 
      - POSTGRES_USER=postgres 
    volumes: 
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql 
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres -d smartmarkt"]
      interval: 5s
      timeout: 5s
      retries: 5
  api: 
    build: backend/ 
    ports: 
      - "8080:8080" 
    depends_on: 
      database:
        condition: service_healthy

这样后端容器只会在数据库通过健康检查(能正常接受连接)之后才启动,避免启动时数据库还没准备好导致连接失败。

4. 快速排查网络连通性的小技巧

如果还是有问题,可以进入后端容器内部测试网络:

  1. 先找到后端容器的名称:docker ps,找到api服务对应的容器名
  2. 进入容器:docker exec -it <你的api容器名> /bin/bash
  3. 尝试ping数据库服务:ping database,如果能ping通说明网络没问题
  4. 如果容器里没有psql,可以临时安装:apt update && apt install postgresql-client -y,然后直接测试连接:psql -h database -U postgres -d smartmarkt,输入密码postgres,如果能连上说明数据库配置没问题

内容的提问来源于stack exchange,提问作者Proxy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 21:22:53