Reputation: 1
I have tried at least 20-25 combination on the Dockerfile
, docker-compose.yml
and application.yml
but still get the same error.
I think the problem may be related to Java version, because I use Java 11 and the proper jdk on Dockerfile, but the error still indicates Java8 (maybe JRE related, but not sure).
Here is the error message when I run docker-compose up
command:
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
movies-app | at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
movies-app | at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:na]
movies-app | at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
movies-app | at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[na:na]
movies-app | at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61) ~[mysql-connector-j-8.0.31.jar!/:8.0.31]
movies-app | at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105) ~[mysql-connector-j-8.0.31.jar!/:8.0.31]
movies-app | at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151) ~[mysql-connector-j-8.0.31.jar!/:8.0.31]
movies-app | at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167) ~[mysql-connector-j-8.0.31.jar!/:8.0.31]
movies-app | at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:89) ~[mysql-connector-j-8.0.31.jar!/:8.0.31]
movies-app | at com.mysql.cj.NativeSession.connect(NativeSession.java:120) ~[mysql-connector-j-8.0.31.jar!/:8.0.31]
movies-app | at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:948) ~[mysql-connector-j-8.0.31.jar!/:8.0.31]
movies-app | at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:818) ~[mysql-connector-j-8.0.31.jar!/:8.0.31]
movies-app | ... 133 common frames omitted
movies-app | Caused by: java.net.ConnectException: Connection refused (Connection refused)
movies-app | at java.base/java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:na]
movies-app | at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:412) ~[na:na]
movies-app | at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:255) ~[na:na]
movies-app | at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:237) ~[na:na]
movies-app | at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:na]
movies-app | at java.base/java.net.Socket.connect(Socket.java:609) ~[na:na]
movies-app | at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:153) ~[mysql-connector-j-8.0.31.jar!/:8.0.31]
movies-app | at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63) ~[mysql-connector-j-8.0.31.jar!/:8.0.31]
movies-app | ... 136 common frames omitted
movies-app |
movies-app exited with code 1
And here are:
Dockerfile:
#FROM openjdk:8
FROM maven:3.8.1-openjdk-11
FROM openjdk:11
COPY target/*.jar app.jar
CMD mvn clean install -DskipTests
EXPOSE 8088
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=docker", "app.jar"]
docker-compose.yml:
version: '3.8'
services:
server:
container_name: movies-app
build: .
restart: always
ports:
- "8088:8080"
networks:
- app-network
mysqldb:
container_name: mysqldb
image: mysql:8.0.28
restart: always
ports:
- "3307:3306"
environment:
MYSQL_DATABASE: moviesdb
MYSQL_USER: user
MYSQL_PASSWORD: pass
MYSQL_ROOT_USER: root
MYSQL_ROOT_PASSWORD: pass
volumes:
- dbdata:/var/lib/mysql
networks:
- app-network
networks:
app-network:
driver: bridge
volumes:
dbdata:
driver: local
application.yml: here is the db connection details part:
datasource:
password: pass
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
# url: jdbc:mysql://localhost:3306/movies-db?createDatabaseIfNotExist=true&allowPublicKeyRetrieval=true&useSSL=false
url: jdbc:mysql://mysqldb:3307/moviesdb?createDatabaseIfNotExist=true&allowPublicKeyRetrieval=true&useSSL=false
So, what is the cause of the problem?
Upvotes: 0
Views: 246
Reputation: 11
Are you trying to connect to port 3307
of mysqldb
?
Ports defined in docker-compose.yml
are only mapped outside of your docker bridge network. Try to connect to 3306
.
Your url in application.yaml
should be mysqldb:3306
.
Upvotes: 1