java - 尝试在 docker 容器之间进行连接时,连接被拒绝(连接被拒绝)

标签 java mysql containers docker-container connection-refused

尝试在本地主机中建立从应用程序容器到 mysql 容器的连接,出现连接拒绝异常

我们正在采用docker方法来调用rest api服务以采用微服务方法。我们正在应用程序容器和 mysql 容器之间建立连接,同时我们编写了一个 docker-compose 文件,创建了 mysql 容器和应用程序容器,并为两个容器公开了端口。以下是运行 docker-compose 文件的命令 docker-compose up。

docker-compose.yml 文件

version: '3'

服务: docker-mysql: 图片:mysql:最新 容器名称:mysql 服务器 环境: - MYSQL_ROOT_PASSWORD=abc123 - MYSQL_DATABASE=fitapp - MYSQL_PASSWORD=root 端口: - 3307:3306

spring-webap:
    build:
        dockerfile: Dockerfile
        context: .
    image: fitapp:1.0
    depends_on:
      - docker-mysql
    ports:
      - 8092:8080


spring-webap_1  | Caused by: java.net.ConnectException: Connection refused

最佳答案

从下面我可以看到的是你的 docker-compose.yml (已更改密码以便更好地理解)

version: '3'
services:
  docker-mysql:
    image: mysql
    ports:
        - "3301:3306"
    environment:
        - MYSQL_USER=root
        - MYSQL_DATABASE=fitapp
        - MYSQL_ROOT_PASSWORD=pass
        - MYSQL_PASSWORD=pass
  spring-webap:
    build:
      dockerfile: Dockerfile
      context: .
    image: fitapp:1.0
    depends_on:
      - docker-mysql
    ports:
      - 8092:8080

spring application.properties/application.yml 应该如下所示

    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://docker-mysql:3301/fitapp
    username: root
    password: pass

检查一下,如果您在 url 中指定了 localhost,它将无法工作,因为 MySql 和 Spring 服务在不同的容器中运行。它应该链接或在同一网络中

关于java - 尝试在 docker 容器之间进行连接时,连接被拒绝(连接被拒绝),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56456533/

相关文章:

java - 除了内存不足,JVM 什么时候产生转储

java - 如何从文本文件中的字符串中删除奇数 ASCii 字符?

python - 如何在不调用 RuntimeError 的情况下使用循环删除 Counter 对象中的条目?

docker - 压缩/压平 Docker 镜像不会对注册表缓存产生不利影响吗?

java - 无法部署eclipse导出的war文件

java - 当用户想要退出我的应用程序时评价我的应用程序对话框

php - 使用具有多个时间范围的单个查询从两个表中获取数据

MySQL 查询运行缓慢。帮忙优化一下

mysql - SSIS将英文BlobColumn转换为以汉字结尾的字符串

docker - 使用 docker-compose 绑定(bind)挂载单个文件