dokploy系列 II | 如何内网通讯,连接自建数据库,后端服务互访

我在 dokploy 中部署了多个服务,如何内网访问我的自建数据库,以及其他内网后端服务呢?

首先我们快速了解下,内网通讯可以做些什么?

flowchart LR User -->|http| A[Caddy] A --> B[wish-bottle-service] A --> C[ other-service] B <-.->|互相调用| C B --> D[ PG]
  • 连接dokploy的自建数据库,比如 PG、MySQL、Redis、MongoDB 等
  • 连接其他内网后端Go、Node.js服务,组成微服务架构
  • 网关,比如 使用 nginx/caddy 代理 A、B 服务的 API

术语解释:

dokploy traefik: 是 dokploy 的核心网络组件,基于 Traefik 反向代理实现,负责管理所有服务的内网域名解析、路由转发和负载均衡。它允许服务之间通过内部网络直接通信,无需暴露到公网,同时提供服务发现功能,使得微服务架构中的各组件能够自动找到并连接彼此。

dokploy 服务别名: 是 dokploy 为每个服务分配的别名,用于服务之间的内部通信。

Caddy : 一个基于 Go 语言开发的 HTTP/2 代理服务器,支持自动获取证书、负载均衡、缓存、代理等功能,可以作为内网代理使用,类似 nginx。

后端服务如何内网通讯

首先我们来看这个场景,这是一个很常见的代理场景,Caddy 代理 wish-bottle-service 和 other-service 服务。

flowchart LR User -->|http| A[Caddy] A --> B[wish-bottle-service] A --> C[ other-service] B <-.->|互相调用| C B --> D[ PG]

Caddy 需要代理 wish-bottle-service 的内网服务提供给公网使用,所以此时的场景是 Caddy 需要访问 wish-bottle-service 的内网服务,如下图所示。

如何找到被调服务别名

在每次新建项目的时候,dokploy 会自动为项目分配一个别名,如下图所示。

通过这个别名,我们通过在 caddy 的 terminal 中执行命令,就可以访问到 wish-bottle-service 的内网服务,我们来测试一下。

通过 Terminal 测试 Http 访问

在到 caddy 的 terminal 访问服务之前,我们先自测一下 wish-bottle-service 服务是否正常。

进入 wish-bottle-service 的 terminal 中,执行命令:

bash 复制代码
wget -qO- http://localhost:3000/examples.iterable

返回结果, 说明服务正常。

json 复制代码
{"result":{"data":{"hello":"world"}}}

然后我们进入 caddy 的 terminal 中,执行命令:

bash 复制代码
wget -qO- http://sh-wish-bottle-service-j4uabc:3000/examples.iterable

返回结果, 说明服务正常。

注意:访问服务时,确认端口、路径等是否正常,否则会访问失败。

此时,我们已经通过别名,成功访问到了 wish-bottle-service 的内网服务。

此次之外,我们也可以通过内网别名访问我们自建的 PG 数据库。

如何连接自建数据库

有了上面的基础,我们就可以通过别名访问我们自建的 PG 数据库了。

dokploy 支持连接自建数据库,只需要在项目中配置数据库连接信息,就可以通过别名访问数据库。

我们通过 tcp 测试下联通性。

bash 复制代码
telnet sh-pg-wfbdan 5432

返回结果, 说明数据库连接正常。

总结

在 dokploy 平台中,内网通讯是构建复杂应用架构的关键能力,本文总结了 dokploy 内网通讯的核心特点和使用方法。

使用内网通讯有以下优势:

  • 安全性:服务间通信无需暴露到公网
  • 便捷性:自动服务发现,无需手动配置网络
  • 灵活性:支持多种类型的服务互联互通

dokploy 的内网通讯能力为构建复杂、安全、高效的应用架构提供了强大支持,使开发者能够专注于业务逻辑而非底层网络配置。


公众号:全栈开发七分钟

博客:www.abfree.com

相关推荐
知花实央l23 分钟前
【Web应用实战】 文件上传漏洞实战:Low/Medium/High三级绕过(一句话木马拿webshell全流程)
前端·学习·网络安全·安全架构
华仔啊23 分钟前
JavaScript + Web Audio API 打造炫酷音乐可视化效果,让你的网页跟随音乐跳起来
前端·javascript
ArabySide24 分钟前
【Spring Boot】REST与RESTful详解,基于Spring Boot的RESTful API实现
spring boot·后端·restful
鸡吃丸子26 分钟前
SEO入门
前端
檀越剑指大厂1 小时前
【Nginx系列】Tengine:基于 Nginx 的高性能 Web 服务器与反向代理服务器
服务器·前端·nginx
程序定小飞1 小时前
基于springboot的学院班级回忆录的设计与实现
java·vue.js·spring boot·后端·spring
是你的小橘呀1 小时前
深入理解 JavaScript 预编译:从原理到实践
前端·javascript
uhakadotcom1 小时前
在使用cloudflare workers时,假如有几十个请求,如何去控制并发?
前端·面试·架构
风止何安啊1 小时前
栈与堆的精妙舞剧:JavaScript 数据类型深度解析
前端·javascript
用户47949283569151 小时前
Chrome DevTools MCP:让 AI 助手直接操作浏览器开发工具
前端·javascript·chrome