试图在本地主机中建立从应用程序容器到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
答案 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服务在不同的容器中运行,应链接或在同一网络中