docker中的Java应用程序:无法获取postgres

时间:2018-05-02 23:06:55

标签: java postgresql docker

我创建了一个java web应用程序。当我在主机上运行java -jar xxx.jar时,它可以连接到我主机上的Postgres DB而没有任何问题。但是当我在我创建的docker容器中运行时,我的应用程序无法获取相同jdbc URL的驱动程序实例。错误是:

  

java.lang.RuntimeException:无法获取驱动程序实例   JDBCURL =” JDBC:在PostgreSQL:// ip_of_my_host:5432 / SRR”

这就是我运行docker image的方式:

docker run -p 4567:4567 \
  -e JP_RESULTS_DB_URL=’jdbc:postgresql://ip_of_my_host:5432/srr’ \
  -e JP_RESULTS_DB_USERNAME=my_username \
  -e JP_RESULTS_DB_PASSWORD=my_password \
  -it id_of_image

4567是我的Rest API服务器的端口号。我是否还需要为5432设置移植?如果我添加" -p 5432:5432",我收到错误它已经分配,​​所以我没有将此端口添加到docker run。

可能是什么问题?它是驱动程序问题或端口问题还是别的什么?

我还没有找到任何有用的答案,所以我不得不问。

2 个答案:

答案 0 :(得分:2)

你应该使用docker-compose来构建堆栈,然后安装postgresql驱动程序,java等来构建整个基础架构。

为此你需要创建docker-compose yml。

例如找到以下链接

Docker Compose + Spring Boot + Postgres connection

答案 1 :(得分:1)

通过更改单引号解决了此问题。谷歌文档自动将我的单引号改为倾斜,直到@Phil指出我才注意到。