我已经在Dockerfile、docker-compose.yml和application.yml上尝试了至少20-25个组合,但仍然得到了相同的错误。
我认为这个问题可能与Java版本有关,因为我在Dockerfile上使用了Java11和适当的jdk,但是错误仍然表示Java8 (可能与JRE相关,但不确定)。
下面是运行docker-compose up命令时的错误消息:
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以下是:
文档:
#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:这里是db连接详细信息部分:
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那么,问题的原因是什么呢?
发布于 2022-11-09 15:18:59
您是否试图连接到端口3307 of mysqldb?
docker-compose.yml中定义的端口仅映射在您的坞桥网络之外。尝试连接到3306。
您在application.yaml中的url应该是mysqldb:3306。
https://stackoverflow.com/questions/74377082
复制相似问题