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-compose时无法访问docker容器内的spring-boot rest-endpoint
如何从 Elastic Beanstalk 中的 Spring Boot 应用程序中获取客户端主机名和/或客户端 IP 地址?