mysql - docker-compse.yml spring boot mysql 配置
问题描述
我一直在尝试使用 MySQL 为我的 spring boot 应用程序配置 docker。但是,运行后我不断收到通信链路故障错误
码头工人组成
这是错误的快照
spring-batch_1 | 2019-11-14 06:23:43.713 INFO 1 --- [ main]
com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
spring-batch_1 | 2019-11-14 06:23:43.918 ERROR 1 --- [ main]
com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool
initialization.
spring-batch_1 |
spring-batch_1 | com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link
failure
spring-batch_1 |
spring-batch_1 | The last packet sent successfully to the server was 0 milliseconds ago. The
driver has not received any packets from the server.
spring-batch_1 | at
com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:174) ~[ .
mysql-connector-java-8.0.18.jar!/:8.0.18]
spring-batch_1 | at
com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException
(SQLExceptionsMapping.java:64 ) ~[mysql-connector-java-8.0.18.jar!/:8.0.18]
spring-batch_1 | at
com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:836) ~[mysql-connector-java-
8.0.18.jar!/:8.0.18]
spring-batch_1 | at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456) ~
[mysql-connector-java-8.0.18.jar!/:8.0.18]
spring-batch_1 | at
com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246) ~[mysql-connector-java-
8.0.18.jar!/:8.0.18]
spring-batch_1 | at
com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:199) ~[mysql-
connector-java-8.0.18.jar!/:8.0.18]
spring-batch_1 | at
com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138) ~[HikariCP-
3.4.1.jar!/:na]
spring-batch_1 | at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:353) ~
[HikariCP-3.4.1.jar!/:na]
spring-batch_1 | at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:201) ~
[HikariCP-3.4.1.jar!/:na]
spring-batch_1 | at
com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:473) ~[HikariCP-
3.4.1.jar!/:na]
spring-batch_1 | at
com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:562) ~[HikariCP-
3.4.1.jar!/:na]
spring-batch_1 | at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) ~ .
[HikariCP-3.4.1.jar!/:na]
spring-batch_1 | at
com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-
3.4.1.jar!/:na]
spring-batch_1 | at
com.zaxxer.hikari.HikariDataSource$$FastClassBySpringCGLIB$$eeb1ae86.invoke(<generated>) ~ .
[HikariCP-3.4.1.jar!/:na]
spring-batch_1 | at
org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-
5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
spring-batch_1 | at
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint
(CglibAopProxy.java:769) ~[spring-aop-5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
spring-batch_1 | at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
spring-batch_1 | at
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed
(CglibAopProxy.java:747) ~[spring-aop-5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
spring-batch_1 | at
org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed
(DelegatingIntroductionInterceptor.java:136) ~[spring-aop-5.2.1.RELEASE.jar!/:5.2.1.RELEASE]
这是我的 docker-compose.yml文件
version: "3.3"
services:
mysql:
restart: always
image: mysql:latest
ports:
- 6033:3306
expose:
- 6033
volumes:
- db_data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=root@123
- MYSQL_DATABASE=micro_services
- MYSQL_USER=root
- MYSQL_PASSWORD=root@123
spring-batch:
restart: always
image: ioesandeep/product-service:0.0.1-SNAPSHOT
ports:
- "8082:8082"
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://127.0.0.1:6033/micro_services
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: root@123
SPRING_JPA_DATABASE: mysql
depends_on:
- mysql
volumes:
db_data: {}
这是我的dockerfile
,用于构建我的spring-batch 图像
FROM openjdk:11-jdk
VOLUME /tmp
ARG JAR_FILE
ADD ${JAR_FILE} product.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/product.jar"]
我正在使用来自com.spotify的 dockerfile-maven-plugin来构建图像。这是我用于 spring boot 和 hibernate的application.properties文件
spring.application.name=product
server.port=8082
spring.jpa.hibernate.ddl-auto=create-drop
spring.datasource.url=jdbc:mysql://127.0.0.1:6033/micro_services
spring.datasource.username=root
spring.datasource.password=root@123
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database=mysql
spring.batch.initialize-schema=always
spring.batch.job.enabled=false
Docker version 18.09.2, build 6247962
mysql Ver 8.0.18 for macos10.14 on x86_64 (MySQL Community Server - GPL)
图片
mysql latest c8ee894bd2bd 4 weeks ago
openjdk 11-jdk a7e47afa852b 3 weeks ago
我为 docker-compose 文件尝试了很多配置,但每次都遇到相同的错误。我不确定配置中缺少什么。我已经尝试了 2 多天了。我非常感谢您的快速帮助。谢谢
解决方案
你有你SPRING_DATASOURCE_URL
的本地主机(127.0.0.1):
SPRING_DATASOURCE_URL: jdbc:mysql://127.0.0.1:6033/micro_services
就您的spring-batch
容器而言,它本身不是主机,因此它将无法连接。
您需要更改它以引用 mysql 容器,例如:
SPRING_DATASOURCE_URL: jdbc:mysql://mysql:6033/micro_services
推荐阅读
- search - 在 robots.txt 的开头禁止所有机器人后,指定指令是否会创建异常?
- sql - 如何编写 SQL 查询以从选定列中删除给定的一组特殊字符?
- sql-server-2012 - SQL - 基于 YES 或 NULL 值,分配新值并连接新值
- python - 在 QPlainTextEdit 中使用 tqdm 显示终端输出
- python - 带有超时的 Python 属性测试
- html - 防止图像在 div 中拉伸并保持比例
- php - Q&A:如何在阿里云函数计算服务上使用 PHP 获取 POST 变量
- java - 春季启动,jdbcTemplate,Java
- vue.js - 你如何让 ESLint 与 VSCode、NVM 和 Vue 一起工作?
- java - 在二维数组中查找相邻元素并计算它们。