使用mysql docker容器的JDBC通信链接失败

时间:2017-09-05 07:18:25

标签: mysql docker jdbc

当我的java spring应用程序尝试连接到数据库时,我得到以下内容:

Caused by: 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.

spring应用程序中的连接URL如下:

JDBC:MySQL的:// mysqldbserver:3306 / supersede_orchestrator_spring useSSL =假安培; autoReconnect的=真安培; failOverReadOnly =假安培; maxReconnects为= 10

其中mysqldbserver是docker-compose config中的服务名称:

version : '3'
services:
  springappserver:
    build:
      context: .
      dockerfile: web.dockerfile
    ports:
      - "8081:8080"
    networks:
      - mt-network
    volumes:
      - .:/vol/development
    depends_on:
      - mysqldbserver
  mysqldbserver:
    build:
      context: .
      dockerfile: db.dockerfile
    ports:
      - "13306:3306"
    networks:
      - mt-network
    environment:
      MYSQL_DATABASE: supersede_orchestrator_spring
      MYSQL_USER: supersede_orch
      MYSQL_PASSWORD: ****
      MYSQL_ROOT_PASSWORD: ****
    container_name: orchestrator_mysqldbserver
networks:
  mt-network:
    driver: bridge

在mysql docker容器中,我已经将bind-address调整为0.0.0.0。 supersede_orch用户的权限设置为%。 当我连接到springappserver docker容器时,我可以通过telnet mysqldbserver 3306到达数据库,我也可以从spring docker容器连接到命令行上的数据库:mysql -h mysqldbserver -u supersede_orch -p。 虽然java spring应用程序无法连接到另一个docker容器上运行的DB。

web.dockerfile如下所示:

FROM java:8-jre

VOLUME /tmp
ADD build/libs/feedback_orchestrator-2.0.0.jar app.jar

RUN apt-get update
RUN apt-get install mysql-client -y
RUN apt-get install libmysql-java -y

RUN bash -c 'touch /app.jar'

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom -Djava.net.preferIPv4Stack=true","-jar","/app.jar"]

所以,我试图确保java使用IP4来解析mysqldbserver(我也使用了相应的mysqldbserver的IP地址,但也失败了。)

最后停靠者图片-a:

42db4e656e6e        orchestrator_springappserver   "java '-Djava.secu..."   16 minutes ago      Up 16 minutes             0.0.0.0:8081->8080/tcp    orchestrator_springappserver_1
e2b0b5cc15ac        orchestrator_mysqldbserver     "docker-entrypoint..."   2 hours ago         Up About an hour          0.0.0.0:13306->3306/tcp   orchestrator_mysqldbserver

你知道问题是什么吗?谢谢!

2 个答案:

答案 0 :(得分:2)

以上配置是正确的。我只是愚蠢到忘记重建罐子。所以,jdbc url没有更新。它现在完美无缺。

答案 1 :(得分:0)

我收到了这个错误。对我来说,我忘了启动WAMP,它有mysql信息。