midway v3使用tunnel-ssh,ssh隧道连接数据库

直接上代码,configuration文件内容,在onConfigLoad声明周期中,创建好隧道

import { Configuration, App, IMidwayContainer } from '@midwayjs/core'
import * as koa from '@midwayjs/koa'
import * as validate from '@midwayjs/validate'
import * as info from '@midwayjs/info'
import * as orm from '@midwayjs/typeorm'
import { join } from 'path'
// import { DefaultErrorFilter } from './filter/default.filter';
// import { NotFoundFilter } from './filter/notfound.filter';
import { ReportMiddleware } from './middleware/report.middleware'
import { createTunnel } from 'tunnel-ssh'


@Configuration({
  imports: [
    koa,
    validate,
    {
      component: info,
      enabledEnvironment: ['local'],
    },
    orm
  ],
  importConfigs: [join(__dirname, './config')],
})
export class ContainerLifeCycle {
  @App()
  app: koa.Application

  async onConfigLoad() {
    // 在本地开发时,启动ssh隧道,去连接数据库
    process.env.MIDWAY_SERVER_ENV === 'local' && await this.getTunnel()
  }

  async onReady(container: IMidwayContainer) {

    // add middleware
    this.app.useMiddleware([ReportMiddleware])
    // add filter
    // this.app.useFilter([NotFoundFilter, DefaultErrorFilter]);


  }


  async getTunnel() {
    const tunnelOptions = {
      autoClose: true
    }
    const serverOptions = {
      // 本地端口
      port: 3307
    }
    // 隧道机配置
    const sshOptions = {
      host: 'xxxxxxxx',
      port: 22,
      username: 'xxx',
      password: 'xxxx'
    }

    const forwardOptions = {
      srcAddr: '0.0.0.0',
      srcPort: 3307,
      // 目标机器ip和端口
      dstAddr: 'xxxxx',
      dstPort: 3306
    }
    await createTunnel(tunnelOptions, serverOptions, sshOptions, forwardOptions)
  }
}


下图是数据库连接配置,端口和创建隧道时映射的端口保持一致即可
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值