我想构建我的springboot项目。然后我想对我的代码进行泊坞窗处理。但是当我建造时,我得到了错误。我认为这是由postgresql设置引起的。但是我找不到原因。
能请你帮我吗?
docker-compose.yml file;
version: '2'
services:
web:
build: .
ports:
- 8080:8080
db:
container_name: productdb
image: postgres:9.5
volumes:
- sample_db:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=bright
- POSTGRES_USER=postgres
- POSTGRES_DB=productdb
- PGDATA=/var/lib/postgresql/data/pgdata
ports:
- "5432:5432"
volumes:
productdb: {}
application.yml文件;
server:
port: 8761
eureka:
client:
registerWithEureka: false
fetchRegistry: false
server:
enableSelfPreservation: false
waitTimeInMsWhenSyncEmpty: 0
spring:
application:
name: product-service
datasource:
url: jdbc:postgresql://db:5432/productdb
username: postgres
password: xxxx
initialization-mode: always
jpa:
show-sql: true
hibernate:
ddl-auto:
properties:
hibernate:
temp:
use_jdbc_metadata_defaults: false
错误看起来像;
org.postgresql.util.PSQLException:连接尝试失败。
谢谢
答案 0 :(得分:1)
在DigitalOcean中使用DataGrip软件和DB。出现错误
[08001] The connection attempt failed. java.net.SocketTimeoutException: connect timed out.
确保我当前的IP是allowed inbound connections之一,并且可以正常工作。 (即使该错误可能已经有所不同。)
希望这最终对某人有用。
答案 1 :(得分:0)
如果您的docker-compose.yml文件配置正确,则应启动两个容器:
docker ps
来源:https://intelligentbee.com/2017/09/18/setup-docker-symfony-project/
一个用于应用程序,一个用于数据库。
这些容器位于同一主机中,因此,如果您的网站需要连接到数据库,则它必须使用: localhost 作为数据库ip。
也可以使用:127.0.0.1或0.0.0.0您只需尝试一下!
如果您的网站和数据库位于不同的主机中,则可以使用托管数据库的公共IP。但是,当您使用 docker-compose 时,情况并非如此。
我建议您在Web应用程序中使用数据库之前先测试数据库是否已准备就绪并可用。
为了测试您的数据库,您可以采用以下方法之一:
有几种方法,但是最简单的选择是 telnet 命令。例如,为了测试mysql容器是否已准备好在启动该机器的机器上使用:
telnet localhost 3306
如果您的mysql已准备就绪,则telnet必须向您显示如下图所示的结果:
任何其他负面结果,都表明您的mysql容器已退出或错误。
注意:将3306更改为正确的后端端口
UI用户的其他选项正在使用某些数据库IDE测试数据库连接。只需下载几个postgress客户端IDE之一并测试您的数据库即可。
答案 2 :(得分:0)
您的数据库应接受容器外部的连接
sudo docker run --name pg -p 5432:5432 -v pg_data:/var/lib/postgres/data -e POSTGRES_DB=mydb -e POSTGRES_USER=pg_user -e POSTGRES_PASSWORD=pg_password -d postgres -c "listen_addresses=*"
“ listen_addresses = ”它将接受容器外部的连接*
您可以使用Follow凭证连接您的Spring Boot项目
db_user = pg_user
db_password = pg_password
db_url = jdbc:postgresql:// localhost:5432 / mydb