SpringBoot+MySQL通过docker-compose部署:数据库连接失败排查
SpringBoot商品微服务Docker部署数据库连接错误排查方案
核心排查方向
以下是针对Docker部署场景下数据库连接失败的逐一排查步骤:
1. 修正数据库连接地址的Host配置
Docker容器之间通过服务名称通信,不能用localhost作为数据库Host。
- 打开
application.properties,确认数据库URL的Host是docker-compose.yml中MySQL服务的名称:# 错误示例:使用localhost(仅本地运行有效) # spring.datasource.url=jdbc:mysql://localhost:3306/product_db?useSSL=false&serverTimezone=UTC # 正确示例:使用docker-compose中MySQL的service名称(比如mysql) spring.datasource.url=jdbc:mysql://mysql:3306/product_db?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
2. 确保数据库与应用的配置参数完全匹配
核对application.properties和docker-compose.yml中的以下参数:
- 数据库名称:
spring.datasource.url中的库名 ↔docker-compose.yml中MYSQL_DATABASE的值 - 用户名:
spring.datasource.username↔docker-compose.yml中MYSQL_USER的值 - 密码:
spring.datasource.password↔docker-compose.yml中MYSQL_PASSWORD的值
3. 添加数据库健康检查,避免应用提前启动
MySQL容器启动后需要时间完成初始化,直接启动SpringBoot应用会导致连接失败。在docker-compose.yml中配置健康检查,让应用等待数据库就绪:
services: mysql: image: mysql:8.0 environment: MYSQL_DATABASE: product_db MYSQL_USER: product_user MYSQL_PASSWORD: product_pass MYSQL_ROOT_PASSWORD: root_pass # 添加健康检查 healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD}"] interval: 5s timeout: 5s retries: 10 product-service: build: . # 依赖数据库健康检查通过后再启动 depends_on: mysql: condition: service_healthy ports: - "8080:8080"
4. 验证Dockerfile的打包逻辑
确保Dockerfile正确复制了Maven打包后的JAR包:
FROM openjdk:17-jdk-slim WORKDIR /app # 注意:此处JAR包名称要与pom.xml中构建的名称一致 COPY target/product-service-0.0.1-SNAPSHOT.jar app.jar ENTRYPOINT ["java", "-jar", "app.jar"]
执行mvn clean package确认target目录下生成了正确的JAR包,再执行docker-compose up --build。
5. 核对MySQL驱动与镜像版本兼容性
如果使用MySQL 8.0+镜像,pom.xml中必须使用对应版本的驱动:
<dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>8.0.33</version> </dependency>
避免因驱动版本过低导致的连接协议不兼容问题。
6. 根据报错信息精准定位
- Connection refused:优先检查Host配置、MySQL容器是否正常启动、端口映射是否正确
- Access denied for user:核对用户名、密码、数据库权限配置
- Unknown database:确认
MYSQL_DATABASE是否正确,MySQL容器启动时是否自动创建了该库
内容的提问来源于stack exchange,提问作者Trung Dao
相关产品推荐
相关产品推荐

