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

相关推荐
H5css�海秀26 分钟前
今天是自学大模型的第一天(sanjose)
后端·python·node.js·php
Z兽兽28 分钟前
React@18+Vite项目配置env文件
前端·react.js·前端框架
SuniaWang35 分钟前
《Spring AI + 大模型全栈实战》学习手册系列 · 专题六:《Vue3 前端开发实战:打造企业级 RAG 问答界面》
java·前端·人工智能·spring boot·后端·spring·架构
韩立学长38 分钟前
Springboot校园跑腿业务系统0b7amk02(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
sheji341642 分钟前
【开题答辩全过程】以 基于springboot的扶贫系统为例,包含答辩的问题和答案
java·spring boot·后端
A_nanda1 小时前
根据AI提示排查vue前端项目
前端·javascript·vue.js
happymaker06262 小时前
web前端学习日记——DAY05(定位、浮动、视频音频播放)
前端·学习·音视频
代码栈上的思考2 小时前
消息队列:内存与磁盘数据中心设计与实现
后端·spring
~无忧花开~2 小时前
React状态管理完全指南
开发语言·前端·javascript·react.js·前端框架
LegendNoTitle2 小时前
计算机三级等级考试 网络技术 选择题考点详细梳理
服务器·前端·经验分享·笔记·php