如何将 Docker 内部的 Spring Boot 应用程序连接到 PostgreSQL 外部
Posted
技术标签:
【中文标题】如何将 Docker 内部的 Spring Boot 应用程序连接到 PostgreSQL 外部【英文标题】:How to connect SpringBoot application inside Docker to outside PostgreSQL 【发布时间】:2019-03-05 10:04:37 【问题描述】:我有 Java SpringBoot Web 应用程序在主机上工作。应用程序连接到 PostgreSQL 数据库。一切正常。操作系统 - Ubuntu 18。
现在我需要在 Docker 容器中移动应用程序,PostgreSQL 除外,它将保留在主机上。
我安装了 Docker,启动了容器,但我在 docker 中的应用程序无法使用默认设置 (localhost) 连接到 PostgreSQL 数据库。
这是我的 application.properties 文件:
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/webdemodb
spring.datasource.username=postgres
spring.datasource.password=123
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQL95Dialect
spring.jpa.generate-ddl=true
这是我的 Dockerfile:
FROM java:8
WORKDIR /
ADD target/webaccount-1.0-SNAPSHOT.jar app.jar
EXPOSE 8080
RUN fc-cache -f -v
ENTRYPOINT ["java","-jar","/app.jar"]
我了解了 Docker 的网络,但没有找到解决方案。我需要设置什么?
【问题讨论】:
你也要暴露5432端口 From inside of a Docker container, how do I connect to the localhost of the machine?的可能重复 您的应用程序必须使用host
网络
Mohammad LB,据我所知,没有必要公开端口,因为它们按原样翻译。
【参考方案1】:
Artemiy,谢谢!为了简单的使用,我刚刚在运行容器时应用了下一个选项:
--network="host"
完整命令:
docker run -d -p 9000:8080 --network="host" --name webaccount webaccount:1.0
【讨论】:
以上是关于如何将 Docker 内部的 Spring Boot 应用程序连接到 PostgreSQL 外部的主要内容,如果未能解决你的问题,请参考以下文章
内部服务器错误 500,在 Docker 中访问 Spring 引导端点时
带有spring boot和kafka的docker内部信任库的问题路径