将Docker容器连接到本地工作台MySQL DB

问题描述:

HI我有我的web应用程序在本地机器上运行并连接到mysql工作台,我现在试图dockerize webapp。我似乎无法得到它连接到我的本地开发机器上的数据库(我正在运行docker for windows),谁能告诉我如何去做这件事。这是我到目前为止。将Docker容器连接到本地工作台MySQL DB

`docker run -it -e "CATALINA_OPTS=-Dspring.profiles.active=dev -DPARAM1=DEV" -p 8080:8080 -p 8005:8005 -p 8009:8009 -p 3306:3306 --add-host=docker:192.168.1.7 -v C:\myapp\trunk\target\myapp.war:/usr/local/tomcat/webapps/myapp.war --name waitapp tomcat:8.0.38-jre8` 

几秒钟后,我跑docker ps -a

CONTAINER ID  IMAGE     COMMAND     CREATED    STATUS       PORTS                       NAMES 
2a1764dd9640  tomcat:8.0.38-jre8  "catalina.sh run"  2 minutes ago  Up 2 minutes      0.0.0.0:3306->3306/tcp, 0.0.0.0:8005->8005/tcp, 0.0.0.0:8009->8009/tcp, 0.0.0.0:8080->8080/tcp waitapp 

容器似乎运行,但我得到一个404未发现当我尝试其他的要求,这是一样的我使用内置的tomcat服务器从Spring工具套件内部运行。

注意 我不想单独运行mysql的容器,并通过网络把两者联系起来,我只是想尝试让我的新创建码头工人的应用程序连接到我的本地数据库的MySQL。

+0

*您连接到MySQL Workbench *的含义是什么?你也可以提供一段代码,或者你如何试图访问容器?据我所见,你正在一个容器中运行应用程序,你如何期望应用程序在网络之外使用一个数据库?你在同一个容器上运行MySQL数据库吗?你想使用MySQL Workbench连接到容器内的数据库吗? – ReynierPM

+0

好吧,我会尝试更好地解释,我在我的戴尔笔记本电脑上运行MySQL Workbench,当我通过SpringToolSuite IDE运行时,弹簧应用程序连接到它。现在我正在使用上面的docker run命令运行一个tomcat容器,并在该容器中安装我的war,但希望它仍连接到笔记本电脑上的MySQL数据库。我怎样才能实现这一点,而不会损坏/旋转MySQL容器。我想让容器与我的主机进行通话。 – Gman

+0

我不知道如何做到这一点,但我认为这是可能的。也许[this](https://docs.docker.com/engine/userguide/networking/default_network/container-communication/)和[this](https://docs.docker.com/engine/userguide/networking/)可以帮助您了解网络在Docker中的工作原理,并从那里您可以实现您的需求。 – ReynierPM

正如上this post提到的,你可以尝试两件事情:

  1. 添加网关,并用它从容器中,像

泊坞窗网创建-d桥--subnet 192.168.0.0/24 - 网关192.168.0.1 dockernet

  1. 除了您的应用包含呃,运行代理(ngnix?)容器中,在需要时

This answer也告诉你如何可以获取主机的IP泊坞窗容器内将击溃到DB的调用。