当前位置: 首页 > 知识库问答 >
问题:

无法从docker容器连接到Localhost Mysql

顾斌
2023-03-14

我已经使用docker工具箱在视窗机器上安装了docker。我也在我的视窗机器上安装了mysql,服务器运行在端口3306上(localhost-127.0.0.1-在docker机器之外)。我在一个名为“micra-workq-svc”的docker网络内部的docker容器中运行一个冲刺启动应用程序,我希望在docker内部运行的应用程序连接到本地主机。我花了几个小时在谷歌上搜索,没有一个链接帮助我解决这个问题。我试着用这个命令运行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中看起来像:

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个答案

戚阳
2023-03-14

只需清理您的容器和图像,管理员执行此命令docker prune-a,把DATABASE_HOST=micra-mysql并再次运行。

 类似资料:
  • 我正在尝试从另一个码头工人容器连接到 kafka docker 容器。但它没有连接。 为了运行kafka和zookeeper,我使用了docker compose文件: 容器docker compose 17138956372294708100 _ kafkatest . producer _ 1和docker compose 17138956372294708100 _ kafkatest .

  • 要运行测试文件,Flask应用程序需要连接到Redis。我尝试将这些URL用于redis主机,如localhost:6379,redis:6379,0.0.0.0:6379,但都没有用。他们都告诉我连接错误或连接拒绝。 知道如何从jenkins docker容器中连接到redis吗?

  • 我已经创建了一个MySQL数据库的映像,并在容器中运行它。我希望它在端口3406/3407上运行,因此我调用docker run命令如下所示: 如果我看我的容器,它看起来是这样的: 我非常想连接到我的数据库现在,但我似乎不能使我的URL工作。 这是我的URL的样子:

  • 问题内容: 我有用于创建mysql映像的docker- compose文件,并将端口公开给3306,但是当我尝试安装CMS时,出现了无法连接数据库的错误。我尝试扫描端口3306,并向我显示它已打开,因此mysql正在运行。 为什么两个Docker容器彼此看不到? 这是我的docker-compose文件: 问题答案: 要连接到数据库,请使用您作为主机名提供的链接/别名。因此,您的CMS可以使用主机

  • 我的docker版本是1.13.1。我正试图从我的docker容器连接到redis-server,但我遇到了拒绝连接的错误。详细的日志如下: 原因:redis.clients.jedis.exceptions.jedisconnectionException:java.net.Connection:redis.clients.jedis.Connection(Connection.java:207

  • 我正在nodejs上使用node-ssh模块。当我启动到ssh的连接时,它给出了错误。我也在使用WSL Ubuntu 18。我有docker compose文件。我在