docker中的Spring应用程序如何访问主机或云mysql中的mysql?

Posted

技术标签:

【中文标题】docker中的Spring应用程序如何访问主机或云mysql中的mysql?【英文标题】:How can a Spring app in docker access mysql in host or cloud mysql? 【发布时间】:2018-07-03 05:06:37 【问题描述】:

如何让 docker 中的 Spring App 主机访问我的主机机(mac)上的 mysql 主机或访问云 mysql 服务?

我知道如果 mysql 是另一个 docker 容器,我可以在 docker 中使用链接。但这种情况并非如此。

版本:'3'

我尝试了主机模式,似乎仍然连接被拒绝。

Dockerfile

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD ./build/libs/app.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","-Dspring.profiles.active=dev","/app.jar"]

docker-compose.yml

services:
  web:
    build: .
    network_mode: "host"
    ports:
      - "8080:8080"

PS:我的主机上的“java -jar -Dspring.profiles.active=dev app.jar”工作正常。

谁能帮帮我?

【问题讨论】:

【参考方案1】:

对于最新的 mac docker,我可以使用 docker.for.mac.localhost 作为主机名

spring.datasource.url=jdbc:mysql://docker.for.mac.localhost:3306/a_shares...

这里讨论了一些黑暗魔法Accessing host machine from within docker container

【讨论】:

以上是关于docker中的Spring应用程序如何访问主机或云mysql中的mysql?的主要内容,如果未能解决你的问题,请参考以下文章

从 docker 容器(linux 上的 docker)访问主机 postgresql

如何将主机上运行的 Spring Boot 应用程序连接到 Docker 上运行的 Postgresql?

从Docker中的主机系统访问文件[重复]

怎样将Docker容器中的文件导入到主机

使用docker-compose时无法访问docker容器内的spring-boot rest-endpoint

如何从 Elastic Beanstalk 中的 Spring Boot 应用程序中获取客户端主机名和/或客户端 IP 地址?