首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Docker未能连接Java 11应用程序和MySQL 8数据库

Docker未能连接Java 11应用程序和MySQL 8数据库
EN

Stack Overflow用户
提问于 2022-11-09 15:07:31
回答 1查看 30关注 0票数 0

我已经在Dockerfiledocker-compose.ymlapplication.yml上尝试了至少20-25个组合,但仍然得到了相同的错误。

我认为这个问题可能与Java版本有关,因为我在Dockerfile上使用了Java11和适当的jdk,但是错误仍然表示Java8 (可能与JRE相关,但不确定)。

下面是运行docker-compose up命令时的错误消息:

代码语言:javascript
运行
复制
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

以下是:

文档:

代码语言:javascript
运行
复制
#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:

代码语言:javascript
运行
复制
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连接详细信息部分:

代码语言:javascript
运行
复制
  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

那么,问题的原因是什么呢?

EN

回答 1

Stack Overflow用户

发布于 2022-11-09 15:18:59

您是否试图连接到端口3307 of mysqldb

docker-compose.yml中定义的端口仅映射在您的坞桥网络之外。尝试连接到3306

您在application.yaml中的url应该是mysqldb:3306

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74377082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档