无法从Docker容器连接到Localhost Mysql

时间:2018-10-28 18:12:15

标签: mysql docker spring-boot

我已使用docker工具箱在Windows计算机上安装了docker。 我还在Windows机器上安装了mysql,并且服务器在端口3306上运行(本地主机-127.0.0.1-docker机器外部) 我正在名为``micra-network''的docker网络中的名称为``micra-workq-svc''的docker容器中运行sprint引导应用程序 我希望在docker内部运行的应用程序连接到此本地主机。 我花了数小时在Google上搜索,但没有任何链接可以帮助我解决此问题。 我尝试使用以下命令运行mysql映像:

docker run  --name micra-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<pass> -e MYSQL_DATABASE=<db name> -e MYSQL_USER=<roo user> -e MYSQL_PASSWORD=<root password >--net=micra-network mysql:latest

我正在使用以下命令运行我的容器:

docker run -e "SPRING_PROFILES_ACTIVE=dev" --network micra-network --env "eureka.client.enabled=true"  --env "eureka.host=micra-eureka-server"  --env "eureka.instance.preferIpAddress: true"  --env "eureka.client.serviceUrl.defaultZone=http://micra-eureka-server:8761/eureka"  --env DATABASE_HOST=127.0.0.1 --env DATABASE_PORT=3306 --env DATABASE_NAME=<db name> --env DATABASE_USER=<db user> --env DATABASE_PASSWORD=<db password> --expose 8083 -p 8083:8083 --name micra-workq-svc --link micra-mysql  -t  <my docker service image>

这是spring.boot中application.properties的样子:

spring:
 datasource:
  password: ${DATABASE_PASSWORD}
  url: jdbc:mysql://${DATABASE_HOST}:${DATABASE_PORT}/${DATABASE_NAME}
  username: ${DATABASE_USER}

运行服务时出现以下错误:

Failed to obtain JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

我的docker机器ip是192.168.99.100.

1 个答案:

答案 0 :(得分:0)

仅在管理员执行此命令 docker prune-a 时清洁容器和映像,然后将DATABASE_HOST = micra-mysql放回并再次运行。