Ich lerne Docker und versuche, meine Java-Webanwendung mit Tomcat Container zu setzen. Ich folgte ein paar grundlegende Tutorials, aber ich fand keine Lösung, um richtig zu mir zu arbeiten. Wenn ich meine Datenbank und Java-Container laufen bekomme ich den Fehler:Ich kann kein Java-Programm mit MySQL über Docker verbinden
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
Geführt von:
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
Geführt von :
docker run --name app_name --link db_name:db_name -p 8080:8080 -d app_name
Die gesamte Konfiguration wurde ordnungsgemäß ausgeführt, wenn ich es lokal in Eclipse ausgeführt habe.
Was ist mysql_hostname oder mysql Verbindungszeichenfolge in Java-Konfigurationsdatei? –
Es gab "url =" jdbc: mysql: // localhost: 3306/db_name ". Ich änderte zu" jdbc: mysql: // db_name: 3306/db_name "wie @Ohmen beraten und es funktioniert jetzt richtig. – Marcon