mysql - Spring Boot MySQL Docker Caused by : java.net.ConnectException: Connection refused(连接被拒绝)

标签 mysql spring-boot docker

如标题所示:

Caused by: java.net.ConnectException: Connection refused (Connection refused)

这在前一段时间对我有用,但不幸的是现在不行了。 我执行的脚本包含:

mvn clean install -> docker-compose build -> docker-compose up

docker 文件:

FROM openjdk:8
ADD target/grades.jar grades.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "grades.jar"]

docker-compose.yaml

version: '3'

services:
  mysql-standalone:
    image: mysql:latest
    environment:
    - MYSQL_ROOT_PASSWORD=password
    - MYSQL_DATABASE=grades
    - MYSQL_USER=root
    - MYSQL_PASSWORD=password
    ports:
    - "33061:3306"
    volumes:
    - /data/mysql
  grades:
    image: grades
    build:
      context: ./
      dockerfile: Dockerfile
    depends_on:
    - mysql-standalone
    ports:
    - 8080:8080
    volumes:
    - /data/grades

和application.properties:

spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:${MYSQL_PORT:3306}/${MYSQL_DB:aws_eb_db}
spring.datasource.username=${MYSQL_USERNAME:root}
spring.datasource.password=${MYSQL_PASSWORD:password}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

最佳答案

localhost 对你的 Docker 容器来说不是主机的 localhost(你的 Docker 容器所在的那个)。基本上它指向您的 Docker 容器本身,而 MySQL 不在其中。因此,当您将 MySQL 的 3306 端口映射到主机的 3306 端口时,您必须指向您的 MySQL 实例或容器的主机。

我肯定会像@LinPy 建议的那样指向 MySQL 本身:

spring.datasource.url=jdbc:mysql://mysql-standalone:3306/grades

关于mysql - Spring Boot MySQL Docker Caused by : java.net.ConnectException: Connection refused(连接被拒绝),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57989392/

相关文章:

mysql - 在 Ado.Net 更新中事务为 "Concurrency violation"

Spring 启动 : Multiple similar ConfigurationProperties with different Prefixes

docker - 如何查看DockerHub容器的来源,以便我适应它?

mysql - 如何将状态列中的内容显示为数据库中的标题

MySql-having 子句中的未知列名称

java - Android 上的 DriverManager.getConnection() 出现 UnsupportedOperationException

java - 如何在保存到 mysql varchar column 的 spring boot 应用程序中将枚举字段转换为字符串

java - Spring Boot @RequestBody 只解析 0/null 值?

docker - dockerfile完成构建后,供应商文件夹消失

docker - 为什么docker会发出 "forbidden path"错误?