简体   繁体   English

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

[英]Connection refused (Connection refused) while trying to connect between docker containers

Trying to establish connection from app container to mysql container in localhost, getting connection refused exception 尝试在本地主机中建立从应用程序容器到mysql容器的连接,导致连接被拒绝异常

We are taking a docker approach to call rest api services to adopt microservice approach. 我们正在采用docker方法来调用rest api服务以采用微服务方法。 We are establishing connection between app container and mysql container While doing so we have written a docker-compose file created mysql container and application container, exposed ports for both containers. 我们正在建立应用程序容器和mysql容器之间的连接,同时我们编写了一个docker-compose文件创建的mysql容器和应用程序容器,公开了两个容器的端口。 Following is command for running docker-compose file docker-compose up. 以下是用于运行docker-compose文件docker-compose的命令。

docker-compose.yml file docker-compose.yml文件

version: '3'

services: docker-mysql: image: mysql:latest container_name: mysql-server environment: - MYSQL_ROOT_PASSWORD=abc123 - MYSQL_DATABASE=fitapp - MYSQL_PASSWORD=root ports: - 3307:3306 服务:docker-mysql:图像:mysql:最新的容器名称:mysql服务器环境:-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

From what I could see below will be your docker-compose.yml (have changed the password for better understanding) 从下面我可以看到的是您的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

The spring application.properties / application.yml should be like below 春天的application.properties / application.yml应该如下所示

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

Check that, if you have given localhost in url it will not work as the MySql and Spring service are running in different container.It should be linked or in a same network 检查,如果您在url中指定了localhost,则它将无法正常工作,因为MySql和Spring服务在不同的容器中运行。它应该是链接的或在同一网络中

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM