[有偿] 在腾讯云上使用 Docker Compose 部署的前后端项目,连接数据库失败

84 天前
 xljya

试过了各自办法和问了 chatgpt 和 cursor ,但还是数据库连接失败,防火墙打开端口了,mysql 服务也启动了,端口也没有被占用,数据库 url 也是直接设置的云服务 ip ,数据库权限也设置了所有人。

项目架构 这是一个在单台服务器上,通过 Docker Compose 部署的前后端分离项目。 入口: 一个 Nginx 反向代理 (nginx-proxy) 作为系统的 API 网关,处理所有 HTTPS 请求。 前端: 一个 React 应用,被打包在独立的 Nginx 容器中。 后端: 一个 Spring Boot 应用,提供 /api 开头的接口。 数据库: 直接运行在服务器的宿主机上,而不是在容器里。

架构图如下:

有时间的佬可以私信我,使用 ToDesk 远程控制,解决后发口令红包。

1797 次点击
所在节点    外包
12 条回复
ganbuliao
84 天前
我试试喽
ganbuliao
84 天前
v:aGhzc2lpaWkK
jworg
84 天前
"数据库 url 也是直接设置的云服务 ip"

这个结构完全不用防火墙相关吧,docker-compose 有个配置

extra_hosts:
- "host.docker.internal:host-gateway"

用 host.docker.internal:3306 来连接。


另外请提供下宿主机 ip 类型,是公网的 ip 还是 docker 桥上的 ip 。
xljya
84 天前
@ganbuliao 佬你加下我 v 吧 好像不能私信 xlyyjya
adzchao
84 天前
@xljya 解决了么。你的 mysql 是容器么
abolast
84 天前
很好奇你创建数据库的命令是什么,有没有准确配置好 ip 。其实最简单能行的,就是宿主机的内网 ip 为基准来访问,就行了。就算后端和数据库两个容器在同一台机,你可以通过宿主机的内网 ip 来哩,这样就无需考虑容器的网络模式了
momocraft
84 天前
容器内用的什么连接 URL 原样发出来看看,可能是 listen inferface 不对
oneisall8955
84 天前
容器内访问宿主机网络,需要填写 docker0 接口 ip 例如 172.17.0.1
oneisall8955
84 天前
数据库 url 也是直接设置的云服务 ip ,为啥要绕外网呢?
xljya
83 天前
@adzchao 解决了 mysql 是宿主机的,错误原因是 我更新了后端内容,没打 jar 包 一直在重启容器
wuhanchu
82 天前
甚至都画了个图。。直接 compose 复制给 AI 问问不就知道了。
kcross
82 天前
我记得 腾讯云的 mysql 有连接的白名单 你需要把你的新服务器加进去

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1138589

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX