尝试在Docker容器之间进行连接时连接被拒绝(连接被拒绝)

时间:2019-06-05 08:11:38

标签: 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'

服务:     码头工人的MySQL:         图片:mysql:latest         container_name:mysql-server         环境:           -MYSQL_ROOT_PASSWORD = abc123           -MYSQL_DATABASE = fitapp           -MYSQL_PASSWORD =根         端口:           -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

1 个答案:

答案 0 :(得分:1)

从下面可以看到的是您的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服务在不同的容器中运行,应链接或在同一网络中