You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Laradock/Docker使用本地Putty搭建的VPN隧道访问亚马逊远端数据库

问题描述

我当前使用Laradock运行网站的开发版本,该站点需要通过VPN隧道访问亚马逊平台上的数据库。
我已经通过Putty在本地PC上搭建完成VPN隧道,将本地1234端口转发至远程数据库对应端口,相关运行日志如下:

2021-07-05 07:33:12 Local port 1234 forwarding to mydb.eu-west-1.rds.amazonaws.com:1234

请问我应当如何配置Laradock或Docker,使其可以正常使用本地机器上已经搭建好的隧道?或者有没有其他方案可以搭建Docker容器能够使用的隧道?

编辑补充:问题已解决,可查看下方回答内容


解决方案

方案1:直接使用本地已搭建的隧道

这是改造成本最低的方案,只需要调整Docker和Laradock的少量配置即可:

前置检查

首先确认Putty的隧道配置允许外部访问:

  • 打开Putty的隧道配置页,勾选「Local ports accept connections from other hosts」,避免隧道只监听127.0.0.1导致Docker容器无法访问。

如果你使用Docker Desktop(Mac/Windows系统)

Docker Desktop默认内置了指向宿主机的域名,直接修改Laradock项目根目录下的.env文件:

  • 找到数据库相关的HOST配置项,将值改为host.docker.internal
  • 数据库端口保持1234即可,无需其他修改,重启容器后就能正常连接。

如果你使用Linux系统的原生Docker

Linux环境默认没有内置宿主机域名,二选一即可:

方法A:配置host映射

  1. 打开Laradock的docker-compose.yml,找到你运行项目的服务(一般是php-fpm或者workspace),新增extra_hosts配置:
services:
  php-fpm:
    # 保留原有其他配置,新增下方内容
    extra_hosts:
      - "host.docker.internal:host-gateway"
  1. 同Docker Desktop配置,将数据库HOST改为host.docker.internal,端口填1234,重启容器即可。

方法B:直接使用宿主机网桥IP

  1. 在宿主机执行ip addr show docker0,获取docker0网桥的IP,一般默认是172.17.0.1
  2. 将数据库HOST改为该IP,端口填1234
  3. 确认宿主机防火墙放开Docker网段对1234端口的访问权限即可。

方案2:在Docker容器内独立搭建隧道

如果不想依赖宿主机的Putty隧道,可以直接在Laradock内部实现隧道自动维护:

  1. 在laradock/workspace/Dockerfile中添加autossh安装命令:
RUN apt-get update && apt-get install -y autossh
  1. 将你的SSH跳板机私钥挂载到workspace容器内,或者打包到镜像中
  2. 在workspace的启动脚本中添加自动建隧道命令:
autossh -M 0 -N -L 0.0.0.0:1234:mydb.eu-west-1.rds.amazonaws.com:1234 你的跳板机用户名@跳板机地址 -p 跳板机SSH端口 -i /路径/到/私钥文件 -o StrictHostKeyChecking=no
  1. 项目内数据库HOST填127.0.0.1,端口填1234即可,autossh会自动维护隧道连接稳定性。

注意事项

以上方案仅适用于开发环境,生产环境建议使用云厂商VPC对等连接、专线等正规方案访问RDS,避免隧道不稳定导致业务故障。


内容的提问来源于stack exchange,提问作者vogomatix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 03:18:01