我在 Ubuntu 18 上的 Docker 容器中使用 Spring Boot 应用程序(在虚拟盒中)。我的应用程序应该连接到安装在同一 VM 上的 Postgres 数据库。
我按照本教程的所有步骤操作: https ://nickjanetakis.com/blog/docker-tip-35-connect-to-a-database-running-on-your-docker-host
我通过ifconfig定义了主机的IP:192.168.1.67
我的application.properties:
server.port=2020
ip.address=localhost # <- will be overwritten
spring.datasource.driverClassName =org.postgresql.Driver
spring.jpa.database=POSTGRESQL
spring.datasource.url=jdbc:postgresql://${ip.address}:5432/postgres
Dockerfile:
FROM openjdk:8-alpine
MAINTAINER Kirill Ch "kirill.m.ch@gmail.com"
EXPOSE 2020
WORKDIR /usr/local/bin
COPY server.jar .
CMD ["java","-Dip.address=192.168.1.67", "-jar", "server.jar"]
我创建图像:
泊坞窗图像构建 -t ws-server 。
我的 PosgreSQL 服务器已启动并正在运行。但是,当我运行时:
docker 容器运行 -it -p 2020:2020 ws-server
我收到此错误:
org.postgresql.util.PSQLException:连接到 192.168.1.67:5432 被拒绝。检查主机名和端口是否正确以及 postmaster 是否接受 TCP/IP 连接。
如果我在没有 Docker 的情况下正常运行我的应用程序,一切正常。
我怀疑虚拟机的问题但是不知道如何解决。
如果我使用--network=host参数一切正常:
docker 容器运行 -it --network=host ws-server
没有“主机”,我想念什么,如何正确处理?