我用这个启动了我的容器
docker run --network my-network cloudflare/cloudflared:latest tunnel --no-autoupdate run --token eyxxxxxxxx
然后是 postgres
docker run -d --name qu-postgres --network my-network -e POSTGRES_PASSWORD=postgres -e POSTGRES_USER=postgres -e POSTGRES_DB=QuDb -p 5439:5432 -v /desktop/PGDbMount/data:/var/lib/postgresql/data postgres
在 cloudflare ui 中设置 子域名:db 域名:我的域名 小路: - 类型:TCP 网址:qu-postgres:5432
我设法连接到 localhost:5439 和 192.168.x.x:5439 但当我输入 主机:db.my-domain.com 端口:5439 用户名+密码+数据库名
失败了。
我不确定我错过了哪一步。我有其他 webapi 容器,它们可以通过 xxx.my-domain.com 访问,因此 cloudflare 隧道肯定可以正常工作
您似乎已经配置了 Cloudflare 隧道以允许外部访问在 Docker 容器中运行的 PostgreSQL 数据库。但是,您在尝试使用 Cloudflare 隧道连接到数据库时遇到问题让我们了解一些故障排除步骤和注意事项:
隧道配置:
确保您的 Cloudflare 隧道配置正确设置,以将流量路由到 PostgreSQL 容器。 Cloudflare 中的设置应将流量定向到您提到的 qu-postgres:5432。仔细检查此配置是否准确并正确保存在 Cloudflare 仪表板中。
网络可达性:
验证 my-network Docker 网络是否允许 Cloudflare 隧道容器和 PostgreSQL 容器之间进行正确通信。由于您可以在本地连接到数据库,因此它可能是正确的,但仍然值得检查。
防火墙和安全组:
确保没有防火墙规则或安全组(如果适用)阻止从 Cloudflare 到 Docker 容器的连接。
DNS 传播:
在 Cloudflare 中设置新的子域后,有时可能需要一段时间才能传播 DNS 更改。确保 db.my-domain.com 解析为正确的地址。
Cloudflare 隧道日志:
检查 Cloudflare 隧道容器的日志是否有任何错误或警告。这些日志可能会让您更深入地了解连接失败的原因。
连接字符串格式:
在尝试连接到数据库时,请验证您使用的连接字符串格式是否正确。根据您的配置,主机应为 db.my-domain.com,端口应为 5439。
SSL/TLS 设置:
如果您的 PostgreSQL 服务器配置为使用 SSL/TLS,请确保客户端连接也尝试使用 SSL/TLS。 SSL/TLS 设置中的错误配置通常会导致连接失败。
Cloudflare 设置:
检查您的 Cloudflare 设置,了解可能阻止或干扰数据库流量的任何规则或设置。
端口转发:
确保您尝试连接的端口 (5439) 已正确映射并转发到 PostgreSQL 容器的端口 (5432)。
从不同位置进行测试:
尝试使用 Cloudflare 隧道从不同的网络环境连接到您的数据库,以排除任何本地网络问题。
Cloudflare 支持:
如果您仍然遇到问题,请考虑向 Cloudflare 支持人员寻求帮助,特别是因为其他容器可以访问,这表明隧道总体正常工作。
请记住,将数据库直接暴露到互联网,即使是通过隧道,也可能会产生安全隐患。确保您拥有强密码,并考虑其他安全措施,例如 IP 白名单或 VPN 访问。