【发布时间】:2022-11-06 17:24:57
【问题描述】:
我已阅读与该问题相关的所有问题并控制了所有要点。我的代码似乎一切正常,但无论如何都无法连接。 尝试从容器连接时出现 CONNECTION REFUSED 错误。 (顺便说一句。当我更改 URL 并尝试从 localhost 连接时,一切都很好)
我的java项目
spring:
datasource:
url: jdbc:mysql://mysqldb:3306/bootdb
username: root
password: root
jpa:
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
hibernate:
ddl-auto: update
database-platform: org.hibernate.dialect.MySQL5Dialect
generate-ddl: true
我的 docker-compose 文件
version: "3"
services:
mysqldb:
image: mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: bootdb
networks:
- testnetwork
employee-jdbc:
image: bago1/student:latest
restart: always
build: .
ports:
- 8080:8080
networks:
- testnetwork
depends_on:
- mysqldb
links:
- mysqldb
networks:
testnetwork:
当我将 URL 编辑为
url: jdbc:mysql://mysqldb:3306/bootdb
- 数据库工作正常
- 它们在同一个网络上
- 语法没问题
【问题讨论】:
-
即使对于容器部署,这
url: jdbc:mysql://mysqldb:3306/bootdb不应该是url: jdbc:mysql://localhost:3306/bootdb吗? -
不。 jdbc:mysql://localhost:3306/bootdb 当我从本地主机调用时工作
-
如果您通读 Compose 日志,应用程序是否会在数据库准备好之前尝试连接?
links:选项是不必要的,可能会激活过时的 Docker 网络模式;删除它有什么不同吗? (您还应该能够摆脱所有networks:块,但这不会产生功能上的差异。) -
我也没有使用网络和链接。这不是问题
标签: java mysql docker kubernetes devops