问题描述
1、本地启动spring 应用程序 可成功连接容器中的 mysql 数据库
2、Docker Compose部署的容器内Spring Boot应用程序无法访问 另一个容器的 MySQL
说明:两个容器在同一个docker内
docker-compose.yml 配置文件如下:
version: "3.9"
services:
app:
build:
context: .
dockerfile: Dockerfile
ports:
- 8989:8989
environment:
- TZ=Asia/Shanghai
depends_on:
- db
networks:
- mynetwork
db:
image: mysql:5.7
container_name: mysql-test
environment:
# 数据库
MYSQL_DATABASE: test
# 设置root用户密码
MYSQL_ROOT_PASSWORD: admin
TZ: Asia/Shanghai
ports:
- 3309:3306
expose:
- 3306
networks:
- mynetwork
volumes:
- ./mysql:/var/lib/mysql
networks:
mynetwork:
application.yml 内容 :
# 数据库配置
server:
port: 8989
spring:
datasource:
url: jdbc:mysql://db:3309/test?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
username: root
password: admin
driverClassName: com.mysql.cj.jdbc.Driver
connection-timeout: 3600
请问哪里的配置有问题 ?
补充:
url: jdbc:mysql://db:3306/test?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
用 服务 和 3306 连接也没能成功
端口应该使用
3306
。3309 是暴露在外面的端口,而同一个 network 下面可以直连。
如果不行,要确认如下几点:
telnet
或者wget
命令尝试,如果都没有,再启动一个 centos 容器,加入到网络组中,安装这两个命令尝试