当我们遇到某些蛋疼的时刻:开发环境和测试环境都没问题,偏偏线上环境出bug。如果你的项目使用了docker,可以完美同步一份线上环境至本地debug。关键词:docker,ssh。
第一步,利用ssh,将开发环境服务端口转发至本地。
线上环境的诸多服务,比如mysql,redis,mongo等待,一般都是监听127.0.0.1端口,仅限本机访问。这个时候,可以利用ssh端口转发功能,转发至开发环境,命令如下:
ssh -NTC -L 0.0.0.0:13306:yourmysqlhost:3306 yourname@yourserverhost -p 22
起到的作用就是将服务端的mysql服务3306(可以是本地,也可以是仅限生产机访问的云服务,如阿里云内网)通过ssh转发至本地13306端口。
连接后,执行命令telnet 127.0.0.1:13306
测试是否转发成功。
第二步,本地运行生产环境docker镜像
一般都是通过docker-compose
编排好的服务,进入包含docker-compose.yml
文件的目录下运行docker-compose up --build
即可一键部署环境。docker编排可简单参考docker-lnmp。
注意:此时服务连接地址应改为宿主机内网IP,而非127.0.0.1。
配置好host,此时就能愉快地debug了。