0

我在 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

没有“主机”,我想念什么,如何正确处理?

4

0 回答 0