我在docker容器中运行了Java微服务,它无法连接到本地托管的mysql。
docker在网络中运行,ip地址为172.0.如果我以Java -jar的形式直接执行java服务,它就能够连接到运行在10.0中的mysql。
船坞-合成文件
version: '2.0'
services:
config-server:
image: test/config-server
container_name: config-server
environment:
- GIT_USERNAME=${GIT_USERNAME}
- GIT_PASSWORD=${GIT_PASSWORD}
ports:
- 8889:8889
entrypoint: ["java", "-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-Dspring.profiles.active=docker", "-Drun.arguments=GIT_USERNAME=${GIT_USERNAME}, GIT_PASSWORD=${GIT_PASSWORD} -Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
discovery-server:
image: test/discovery-server
container_name: discovery-server
links:
- config-server
depends_on:
- config-server
entrypoint: ["./wait-for-it.sh","config-server:8889","--timeout=60","--","java", "-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-Dspring.profiles.active=docker", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
ports:
- 8761:8761
web-authentication:
image: test/web-authentication
container_name: web-authentication
links:
- config-server
- discovery-server
depends_on:
- discovery-server
entrypoint: ["./wait-for-it.sh","discovery-server:8761","--timeout=60","--","java", "-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-Dspring.profiles.active=docker", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
ports:
- 8444:8444
gateway:
image: test/gateway
container_name: gateway
links:
- config-server
- discovery-server
- web-authentication
depends_on:
- discovery-server
entrypoint: ["./wait-for-it.sh","discovery-server:8761","--timeout=60","--","java", "-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-Dspring.profiles.active=docker", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
ports:
- 81:8765发布于 2018-08-29 18:44:05
在docker-compose.yml中配置网络配置后,问题得到了解决,问题是mysql和Docker容器在不同的子网中运行。
https://stackoverflow.com/questions/51161574
复制相似问题