java - Docker 容器中 PostgreSQL 数据库的正确 JDBC 连接 URL

标签 java postgresql spring-boot docker gitpod

我正在使用Gitpod云IDE,它使用Docker镜像通过VSCode IDE提供一个很好的linux环境 .

https://gitpod.io

可以在 Gitpod 中使用Docker 文件在环境中安装其他软件。因此,通过遵循 Gitpod 文档,我安装了 PostgreSQL

https://medium.com/gitpod/bring-your-own-docker-image-to-gitpod-52db1aa861de

我现在可以使用此命令连接到 PostgreSQL。 请注意,我必须提供套接字文件夹才能使其正常工作

psql -h ~/pg/sockets postgres

我有一个 spring boot 应用程序,它应该连接到 PostgreSQL 数据库。连接 URL 取自环境变量。

导出 JDBC_DATABASE_URL=jdbc:postgresql://gitpod@127.0.0.1/postgres

这就是我的属性文件中的内容。

spring.datasource.url=${JDBC_DATABASE_URL}
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.datasource.driverClassName=org.postgresql.Driver
spring.jpa.show-sql=false
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=update
spring.datasource.maxActive=10
spring.datasource.maxIdle=5
spring.datasource.minIdle=2
spring.datasource.initialSize=5
spring.datasource.removeAbandoned=true

这是我在 psql 上运行 \du 来列出用户时得到的结果。

postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 gitpod    | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

登录此linux环境的Gitpod用户名为gitpod。 (我不知道密码)

当我运行命令netstat -plunt | grep postgres 我得到以下输出

tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      955/postgres 

但是当我运行我的应用程序时,它会抛出以下异常

Caused by: java.net.UnknownHostException: gitpod@127.0.0.1
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) ~[na:1.8.0_202]
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_202]
        at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_202]
        at org.postgresql.core.PGStream.<init>(PGStream.java:75) ~[postgresql-42.2.6.jar!/:42.2.6]
        at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:91) ~[postgresql-42.2.6.jar!/:42.2.6]
        at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192) ~[postgresql-42.2.6.jar!/:42.2.6]
        ... 56 common frames omitted

我认为应该是连接 URL 的问题。有人可以解释一下如何让它工作吗?

非常感谢您的帮助。 谢谢。

最佳答案

在 gitpod 社区的帮助下,我成功地在 gitpod 中实现了此功能。

使用 gitpod 团队预构建的 postgres docker 镜像(如本文档中所述)来安装 postgreSQL。 https://www.gitpod.io/blog/gitpodify/#postgresql

我将 URL 更改为以下内容

导出 JDBC_DATABASE_URL=jdbc:postgresql://localhost:5432/postgres?user=gitpod

关于java - Docker 容器中 PostgreSQL 数据库的正确 JDBC 连接 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57903522/

相关文章:

postgresql - 更改 Jelastic 上 PostgreSQL 节点上的 shared_buffers 值

spring - 为什么 Spring Boot 启动器依赖项被设计为与 Maven 传递依赖机制的既定意图相反?

java - 将它部署到 tomcat 后,Jhipster 注册表 url 是什么?

java - Jsoup 选择器正则表达式匹配

java - 如何根据给定范围选择一组数字形成数组?

postgresql - 使用belongsToMany时在sequelize中获取 "model is not associated with other Model"

spring-boot - 找不到类 org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration]

java - 具有多个装饰器文件的站点网

java - JGroupsTransport 类型的对象上的 CacheException :Unable to invoke public void org. infinispan.remoting.transport.jgroups.JGroupsTransport.start()

sql - 从特定列中查找小数位数