Unable to connect Java program to MySQL using Docker

I am studying docker and trying to put my Java web application using Tomcat in a container. I followed some basic tutorials, but could not find a solution to work with me properly. If I run my database and java containers, I will get an error:

SEVERE: Unable to create initial connections of pool.
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.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:981)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:339)
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2286)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2085)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)

MySQL Dockerfile

FROM mysql:latest
ENV MYSQL_DATABASE=db_name #name of db that is required by Java program

Performed:

docker run --name db_name -e MYSQL_ROOT_PASSWORD=root -d db_name

Java dockerfile

FROM tomcat:7.0.70-jre8
ADD deploy /usr/local/tomcat/webapps #extracted .war
ADD jdbc /usr/local/tomcat/lib #MySQL jdbc drivers
ADD context /usr/local/tomcat/conf #context.xml

Performed:

docker run --name app_name --link db_name:db_name -p 8080:8080 -d app_name

The whole configuration worked correctly when I ran it locally in Eclipse.

+4
source share
1 answer

tace, , tomcat, , tomcat. , :

jdbc:mysql://database_container_name:3306/database_name

tomcat.


BTW:

Tomcat Dockerfile

FROM tomcat:7.0.70-jre8
ADD jdbc /usr/local/tomcat/lib #MySQL jdbc drivers
ADD context /usr/local/tomcat/conf #context.xml
ADD deploy /usr/local/tomcat/webapps #extracted .war

. war , , folliwing , . . MySQL , , .

, (, apt-get install smth), chache .

+2

Source: https://habr.com/ru/post/1649656/


All Articles