Question

Using MySQL with Spring boot docker image

I have this problem that I can’t really find a solution. It can be a silly question for most of you but I hope someone offers a little help to this newbie :)

I have 1GB droplet and I installed mysql using this page. I logged in mysql console, imported my database, created a new user with required permissions. Its all good until this point.

I have pulled my docker image from docker hub with this line:

docker run --rm -p 80:80 my-username/image-name

It downloaded for the first time and started my Spring boot application but I got this exception every time I try to run my image.

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.
....
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

my application.yaml file looks like this:

spring:
  mvc:
    view:
      prefix: /WEB-INF/jsp/
      suffix: .jsp
  datasource:
    url: jdbc:mysql://localhost:3306/db-name
    username: my-username
    password: secret-pwd
    driver-class-name: com.mysql.jdbc.Driver
  jpa:
    hibernate:
      dialect: org.hibernate.dialect.MySQLInnoDBDialect
    generate-ddl: true

MySQL server is up and running. What am I missing here?

Subscribe
Share

Submit an answer
You can type!ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

This comment has been deleted

Issue docker ps to see the name of the running mysql container, it’s the last column of this output. I will assume soberb_mysql (I presume you’re running mysql in a container).

Then when you run the main container with your application, use --link=soberb_mysql parameter (the name of the mysql container), or --link=[HEXADECIMAL ID OF CONTAINER]:

docker run --rm -p 80:80 --link=soberb_mysql my-username/image-name

https://docs.docker.com/engine/userguide/networking/default_network/container-communication/