【发布时间】:2020-08-22 09:43:54
【问题描述】:
我希望两个 Docker 容器能够在运行 Docker Toolbox 的 Windows 机器上相互通信。我可以使用--link 选项链接容器;但是,如果我尝试在我创建的自定义桥接网络上运行容器,则容器无法相互通信:
这是我遵循的步骤:
docker network create web-application-mysql-network
docker run --detach --env MYSQL_ROOT_PASSWORD=somepassword--env MYSQL_USER=some-user --env MYSQL_PASSWORD=pass --env MYSQL_DATABASE=mydb --name mysql --publish 3306:3306 --network=web-application-mysql-network mysql:5.7
docker run -p 8080:8080 -d --network=web-application-mysql-network myrepo/mywebapp:0.0.1-SNAPSHOT
上面最后一个命令中的镜像包含作为基础镜像的 Tomcat Web 服务器 Docker 镜像和将托管在 Tomcat 中的“WAR”(Web 存档文件)。当我检查最后一个命令启动的容器的日志时,我可以看到以下错误:
Caused by: com.mysql.cj.exceptions.CJCommunicationsException: 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.
如果我使用--link 选项而不是在我的自定义桥接网络上运行它们,我可以毫无问题地链接这两个容器。
附加信息:我在我的 Web 应用程序代码中使用 localhost 作为 MySQL URL。使用--link时这似乎工作正常@
为了完成这项工作,我缺少哪些配置/命令参数?
【问题讨论】:
-
要支持否决票,请告诉我如何改进这个问题。也许这可能是一个基本问题,也许我在这里遗漏了一些东西。也就是说,我确实提供了所有必需的信息,以便可以回答这个问题。想知道我可以如何改进吗?
标签: java mysql docker tomcat war