如何将我的 docker 连接到远程数据库?

Posted

技术标签:

【中文标题】如何将我的 docker 连接到远程数据库?【英文标题】:How do I connect my docker to remote database? 【发布时间】:2019-02-01 22:27:09 【问题描述】:

我想访问在 url:“xyz”(远程主机)上运行的 mongo db,并且在我的 spring boot 应用程序属性中,我提到了“xyz”的 mongodb url。 现在,当我在 docker 容器中运行此应用程序时,它无法连接到远程 url,并显示连接被拒绝错误。 我们如何从容器内部访问远程数据库?

下面是我的 DockerFile

FROM openjdk:8-jdk-alpine
RUN apk add --no-cache bash
RUN apk add --no-cache curl
EXPOSE 8090
COPY target/<jar file> /application.jar
RUN mkdir /logs
RUN /bin/sh -c "apk add --no-cache bash"
ENTRYPOINT ["/usr/bin/java"]
CMD ["-DLOG_DIR=/logs", "-DLOG_FILE=application.log", "-jar", "-Dspring.profiles.active=local", "-Xmx1g", "/application.jar", "&"]

我的 Application.properties:

spring.data.mongodb.uri = <mongodb-url>

我将我的 docker 镜像构建为:

docker build -t app:app .

我将 docker 镜像运行为:

docker run -d <imageId> 

【问题讨论】:

您是否为您的 docker 环境设置了网络设置,如果没有,您应该这样做。 请阅读How to create a Minimal, Complete, and Verifiable example @MuratGüvenç 更新了问题。请让我知道我必须进行哪些网络设置? @AlexKarshin 更新 MongoDB 在哪里,spring.data.mongodb.uri 中的主机是什么? 【参考方案1】:

以下命令完成工作。

docker run --net=host <imageId>

小心这个命令,因为--net=host 使容器与主机共享网络。容器的网络将不再被隔离。

【讨论】:

以上是关于如何将我的 docker 连接到远程数据库?的主要内容,如果未能解决你的问题,请参考以下文章

如何将我的 Spring Boot 应用程序连接到 Docker 上的 Redis 容器?

如何使用 JetBrains DataGrip 连接到远程 Microsoft Azure 数据库

如何从 docker 容器连接到远程 mysql 托管?

如何连接到远程机器上的 docker mysql 容器

如何将我的自动缩放组连接到我的 ecs 集群?

如何将我的 mysql 数据库连接到我正在使用此代码的网站:[重复]