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

相关推荐
冴羽16 分钟前
SvelteKit 最新中文文档教程(17)—— 仅服务端模块和快照
前端·javascript·svelte
uhakadotcom18 分钟前
Langflow:打造AI应用的强大工具
前端·面试·github
前端小张同学27 分钟前
AI编程-cursor无限使用, 还有谁不会🎁🎁🎁??
前端·cursor
yanxy51231 分钟前
【TS学习】(15)分布式条件特性
前端·学习·typescript
小杨40441 分钟前
springboot框架项目实践应用十四(扩展sentinel错误提示)
spring boot·后端·spring cloud
陈大爷(有低保)1 小时前
Spring中都用到了哪些设计模式
java·后端·spring
程序员 小柴1 小时前
SpringCloud概述
后端·spring·spring cloud
uhakadotcom1 小时前
Caddy Web服务器初体验:简洁高效的现代选择
前端·面试·github
前端菜鸟来报道1 小时前
前端react 实现分段进度条
前端·javascript·react.js·进度条