docker compose:spring boot连接到mysql数据库被拒绝
Posted
技术标签:
【中文标题】docker compose:spring boot连接到mysql数据库被拒绝【英文标题】:docker compose: spring boot connection to mysql database refused 【发布时间】:2019-11-07 06:40:39 【问题描述】:我对 Docker 很陌生,我需要在 docker 工具箱上使用 docker-compose 启动我的 Angular/SpringBoot/mysql 项目。我将一个 docker yml 文件复制到我的项目中,该文件使用了相同的技术并更改了其中的路径以匹配我的项目。但是,当我尝试 docker-compose 时,它会引发以下错误:
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
[...] 84 common frames omitted
Caused by: java.net.ConnectException: Connection refused (Connection refused)
docker-compose.yml 看起来像:
version: '3'
services:
database:
image: mysql
container_name: database
environment:
MYSQL_ROOT_PASSWORD: ****
MYSQL_DATABASE: db_example
MYSQL_USER: springuser
MYSQL_PASSWORD: ****
ports:
- 3306:3306
volumes:
- db_exampleData:/var/lib/mysql
springapi:
image: openjdk:10-jre-slim
container_name: springapi
ports:
- 8443:8443
depends_on:
- database
volumes:
- ./backend/target/backend-0.1.0.jar:/application.jar
command: ["java", "-jar", "application.jar"]
angular:
image: nginx:alpine
container_name: angular
ports:
- 4200:80
depends_on:
- springapi
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./frontend/my-app/dist/my-app:/usr/share/nginx/html
volumes:
db_exampleData:
application.properties:
spring.jpa.hibernate.ddl-auto=none
spring.jpa.open-in-view=false
spring.datasource.url=jdbc:mysql://localhost:3306/db_example
spring.datasource.username=springuser
spring.datasource.password=****
server.port=8443
任何建议都会有所帮助!
【问题讨论】:
您的应用程序如何引用 MySQL 容器? URL 的外观如何? 将属性添加到上面的问题中 【参考方案1】:你需要像这样改变你的连接:
jdbc:mysql://database:3306/db_example
并将其添加到springapi
服务下的 docker-compose 中:
links:
- database
另一方面,您可以使用wait-for-it.sh 在springapi
服务下添加命令部分来检查数据库是否已启动:
command: ["path/to/wait-for-it.sh", "database:3306", "-t", "6000", "--", "YOUR ACTUAL COMMAND"]
【讨论】:
谢谢你,修复了错误。但不知何故,它在“Tomcat 开始于端口:8443 (http) with context path ''”处停止构建。你知道这可能是什么问题吗? wait-for-it.sh 应该放在哪里?我把它放在 yml 文件所在的同一个地方,但它给了我一个错误(没有这样的文件或目录) 这是一个可选的,如果你需要等待数据库 是的,我也在其他几个线程中读到了这一点,所以我认为我最好实施它。我更新了最后一条评论,写的时候不小心点击了发送 这是它现在给我的错误:错误:对于 6a693dd8da33_springapi 无法启动服务 springapi:OCI 运行时创建失败:container_linux.go:345:启动容器进程导致“exec:\”。/wait -for-it.sh\": stat ./wait-for-it.sh: 没有这样的文件或目录": 未知以上是关于docker compose:spring boot连接到mysql数据库被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot + docker-compose + MySQL:连接被拒绝
Spring Boot 2.0:Docker Compose + Spring Boot +
使用docker-compose时无法访问docker容器内的spring-boot rest-endpoint
docker-compose:spring-boot web 服务访问 postgres db 服务
Spring Boot 无法连接 MySQL 并在 Docker/Docker compose 中退出
Spring Boot 2.0:Docker Compose + Spring Boot + Nginx + Mysql 实践