无法将MySQL容器连接到Docker中的Tomcat容器

计划

我希望我的tomcat服务器能够连接到我的MySQL服务器在不同的容器中。

问题

Tomcat无法连接到MySQL

我使用了wordpress教程中有关build立与mysql容器的链接的一些细节,并创build了到MySQL的链接。

虽然tomcat和mysql的旋转起来很好,我似乎无法得到的Tomcat能够连接到MySQL,设置在我的本地机器上工作得很好。

我试图使用 – --net: "host" ,尽pipe这不适用于Tomcat,因为它会引发严重的错误。

以前的答案

我注意到这个post上的错误可能修复的负载 ,虽然我不相信任何这些会转化为我的问题,因为我相信这是一个docker问题,而不是一个主机。

泊坞窗,compose.yml

 web: image: tomcat:7.0 container_name: tomcat-container ports: - "80:8080" hostname: docker-tomcat volumes: - /home/webapps:/usr/local/tomcat/webapps links: - db db: image: mysql container_name: mysql-container environment: MYSQL_ROOT_PASSWORD: Mysqlpassword1 MYSQL_DATABASE: tracker volumes: - /home/mysqlDB:/var/lib/mysql 

这是Context.xml from tomcat.我的Context.xml from tomcat.

 <Context> <Resource name="jdbc/tracker" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" url="jdbc:mysql://localhost:3306/tracker?useSSL=false" driverClassName="com.mysql.jdbc.Driver" username="root" password="mysqladmin1" /> <Resource name="jdbc/jenkins" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" url="jdbc:mysql://localhost:3306/jenkins?useSSL=false" driverClassName="com.mysql.jdbc.Driver" username="root" password="mysqladmin1" /> </Context> 

错误代码。

 The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.) at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549) at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388) at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) at databaseConnections.SQLDatabaseConnection.tableExists(SQLDatabaseConnection.java:131) at databaseConnections.JiraSQLDatabaseConnection.<init>(JiraSQLDatabaseConnection.java:50) 

当你将db连接为“db”时,你不能使用localhost来join你的数据库。 你应该“db”

 jdbc:mysql://db:3306/tracker?useSSL=false 

在你的容器中,localhostdevise你的tomcat容器,而不是你的主机。 MySQL容器有他自己的networking。

而且,如果你不喜欢“db”的名字,你可以用不同的名字来链接它

举个例子:

  links: - db:container-mysql 

在这种情况下,在你的tomcat容器里面,你可以使用

 jdbc:mysql://container-mysql:3306/tracker?useSSL=false