![](/img/trans.png)
[英]Scala Play JDBC can't connect to MySQL when running in a docker container
[英]Scala JDBC project won't run outside of Docker Container?
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 容器到 go 之外的另一個 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")
}
您的數據庫在postgres:5432
下的 docker-compose 之外無法訪問。 嘗試通過psql
或pgcli
或其他客戶端連接到它,你會看到。
當您調用docker-compose ps
或docker ps
時,您將能夠看到如何連接到 Postgres 0.0.0.0:5432
圖像 2 (在ports
00 下) - 很可能是 0.54。
例如,如果我有:
> 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 和光滑無關。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.