0
com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: The connection attempt failed.

输入时出现上述错误sbt run但是,在我的 docker 容器内一切正常。

在第一个容器内,我有一个 postgres 数据库。第二个容器我有一个从我的项目文件夹构建的图像。当我运行docker-compose up --build一切正常。

我怀疑项目(实际代码库)在 docker-compose 容器中看不到 postgres 数据库。

我是否需要 docker-compose 容器之外的另一个 postgres 数据库才能与容器外部的项目代码一起使用?

docker-compose.yml 文件。

version: '3.6'
services:

  # App Backend PostgreSQL
  postgres:
    container_name: sportsAppApiDb
    image: postgres:11.7-alpine
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: password
      POSTGRES_URL: postgres://admin:password@localhost:5432/sportsappapi
      POSTGRES_DB: sportsappapi
      POSTGRES_HOST: postgres
    ports:
      - "5432:5432"

  # App Backend
  sports-app-api:
    container_name: sportsAppApi
    build: ./
    volumes:
      - ./:/usr/src/sports-app-api
    command: sbt run
    working_dir: /usr/src/sports-app-api
    ports:
      - "8000:8000"
    environment:
      POSTGRES_URI: postgres://admin:password@postgres:5432/sportsappapi

scala 项目的入口点

object SportsAppApiStartup extends App {
  SportsAppApiDb(SportsAppApiConfig.appDb).init
  WebServer(Endpoints.handler, 8000).start()

  println(s"Running sports-app-api on port: 8000")

}
4

1 回答 1

1

在 docker-compose 之外无法访问您的数据库postgres:5432。尝试通过psqlorpgcli或其他客户端连接到它,您会看到。

当您打电话时docker-compose ps,或者docker ps您将能够看到如何连接到 Postgres docker 映像(在 下ports) - 很可能是类似0.0.0.0:5432.

例如,如果我有:

> docker ps
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                               NAMES
d90871418bcb        postgres                "docker-entrypoint.s…"   2 weeks ago         Up 4 days           0.0.0.0:7766->5432/tcp              postgres_container

这意味着 Postgres0.0.0.0:7766在 Docker 外部可用。

据我所知,这与 Scala、sbt 和 slick 无关。

于 2020-05-12T21:03:00.317 回答