非容器化Spring Boot CRUD API连接Docker PostgreSQL容器问题及解决
本地未容器化Spring API连接Docker PostgreSQL容器失败的解决方案
问题背景
练习CRUD API开发时,采用Docker PostgreSQL容器替代本地完整安装的PostgreSQL,但本地运行的未容器化Spring API无法与数据库容器建立连接。
已执行的操作
- 创建Docker桥接网络:
sudo docker network create --driver bridge crud_db_network_connection
- 启动PostgreSQL容器:
sudo docker run --name postgresDbCrudContainer -p 5432:5432 -e POSTGRES_PASSWORD=postgres -e POSTGRES_USER=postgres -e POSTGRES_DB="cruddb" --network crud_db_network_connection postgres
- Spring API的
application.yml数据库配置:
spring: datasource: url: jdbc:postgresql://host.docker.internal:5432/cruddb username: postgres password: postgres driver-class-name: org.postgresql.Driver jpa: database: POSTGRESQL show-sql: true hibernate: ddl-auto: create
(注:API运行在本地系统,未进行容器化)
解决步骤
将配置中的host.docker.internal替换为PostgreSQL容器的实际IP即可解决连接问题,具体操作如下:
- 执行命令查看Docker网络内的容器IP:
sudo docker network inspect crud_db_network_connection
- 在返回的JSON数据中,找到
postgresDbCrudContainer对应的IPAddress字段值,即为容器的IP地址。 - 修改
application.yml中的数据库URL,例如容器IP为172.18.0.2,则更新后的URL为:
jdbc:postgresql://172.18.0.2:5432/cruddb
内容的提问来源于stack exchange,提问作者Drago Ban
相关产品推荐
相关产品推荐

