我使用两个docker容器,一个使用mysql,另一个使用wildfly应用程序。如果我以这种方式启动它,它工作正常:
docker run -d --name db -p 3306:3306 mysql_server
docker run -d wildfly_server
但由于端口3306通常在我的主机中使用,我想使用docker的链接功能:
docker run -d --name db mysql_server
docker run -d --link db wildfly_server
这应该有效,但事实并非如此:野生蝇现在无法以
开头ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0348: Timeout after [300] seconds waiting for service container stability.
由于...(稍后在堆栈中)com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:189)
在日志文件的早些时候,我找到了一行:
INFO [org.eclipse.persistence.connection] Connected: jdbc:mysql://db:3306/mydb
所以mysql连接似乎已连接,但之后并没有真正起作用。
docker link命令对mysql连接有什么不同?根据我的理解,它应该只用私人3306端口替换公共3306端口?
我怎么能从wildfly-server独立于wildfly测试jdbc连接?
答案 0 :(得分:0)
进一步的调查表明,这与(几乎)与码头工人无关。使用docker --link db,与数据库的连接速度似乎变慢,因此数据库的初始化需要5分钟而不是2-3分钟,因此wildfly会超时。