Reputation: 1802
I have mysql running in a docker container:
docker run -it --name mysql-db -e MYSQL_ROOT_PASSWORD=root \
-e MYSQL_DATABASE=db -e MYSQL_USER=root -e MYSQL_PASSWORD=root mysql:latest
docker start mysql-db
I want to run my Spring Boot application (with Maven) in another docker container:
docker build -t java-app .
docker run -it --name java-app --link mysql-db:mysql -p 8080:8080 java-app
docker start java-app
But I get an exception:
Caused by: java.net.ConnectException: Connection refused (Connection refused)
My Dockerfile:
FROM java:8
ADD target/demo-0.0.1-SNAPSHOT.jar /usr/share/demo/demo.jar
ENTRYPOINT ["/usr/bin/java", "-jar", "/usr/share/demo/demo.jar"]
My application.yml:
spring:
# General JPA properties
jpa:
show-sql: false
database-platform: org.hibernate.dialect.MySQL57Dialect
# Hibernate Specific properties
hibernate:
ddl-auto: create
properties:
hibernate:
format_sql: false
# DataSource configuration
datasource:
url: jdbc:mysql://mysql:3306/db
username: root
password: root
What is my problem?
MySQL logs have warnings about -skip-name-resolve mode
.
Upvotes: 0
Views: 2662
Reputation: 2252
Looks like your database isn't working at all. You can verify this by running docker ps
or docker exec -it mysql-db mysql -u root -proot db
in 2nd terminal. It will probably fail. Reason to this is -e MYSQL_USER=root
flag you use. This docker image creates root user with password you've provided so when you want to create root user again it fails and shuts down container. Just change it to -e MYSQL_USER=myuser
and it should work.
Upvotes: 1