Scala JDBC 项目不会在 Docker 容器之外运行吗?


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

Ascend a 项目的入口点

object SportsAppApiStartup extends App {
SportsAppApiDb(SportsAppApiConfig.appDb).init
WebServer(Endpoints.handler, 8000).start()
println(s"Running sports-app-api on port: 8000")
}

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

当您调用docker-compose psdocker ps时,您将能够看到如何连接到Postgres码头工人映像(在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

这意味着 Postgres 在 Docker 外部的0.0.0.0:7766下可用。

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

最新更新