远程 coding 实现

2020/12/02 工具

出于现实的考虑,不得不使用多台性能不怎么样的电脑一起玩耍,主要还是为了分摊机器的内存。最先考虑到的是 docker,毕竟现在运行环境都是用 docker 部署的,我想通过docker run -v 远程目录:容器目录 image一条命令来实现,果真是图样图森破,sometime naive,docker 目前还不支持挂载远程目录吧。

后来在小动物们的帮忙下,找到了 sshfs,具体安装过程我就不一一列举了,顶多就是在挂载时会遇到小坑。

sshfs 具体干的工作就是通过 ssh 来访问远程的目录,达到共享的目的。跟同系列的命令差不多,sshfs 基本的用法很简单:

$ sshfs root@192.168.10.66:/Users/Hello/world ~/Desktop/www

以上命令的意思就是将主机 192.168.10.66 上的目录/Users/Hello/world挂载到本机的~/Desktop/www目录上,root 就是远程主机的用户名啦。使用完的时候用umount即可弹出。

$ umount ~/Desktop/www

以上就是远程 coding 最重要的一步。接下来当然就是通过 docker 搭建运行环境。以nginx+php-fpm为例:

$ docker network create lnmp
$ docker run -d --name nginx --network lnmp -p 80:80 -v ~/Desktop/www:/usr/share/nginx/html lwlwufeng/nginx:1.19
$ docker run -d --name php --network lnmp -v ~/Desktop/www:/usr/share/php -w /usr/share/php lwlwufeng/php:7.1-fpm
$ # mysql 就不多说了,这个不影响测试

注意了,由于使用 sshfs 的目的是远程 coding,所以得将共享目录挂载到 docker 容器上,以上使用的是我配置好的测试镜像。由于 nginx 转发 php 的配置需要使用容器名,因此镜像去掉 nginx 配置中的一些注释,具体就不细说了,熟悉的话相信很容易就找到具体注释。

现在就可以在远程主机 192.168.10.66 上愉快地开发,在 docker 机实时预览,完美地利用了老旧机器做一些专项用途。

在断网时可能会对 sshfs 造成一些麻烦,重新连网之后似乎并不会重新生效。尤其是有些程序还在使用 sshfs 挂载的目录时,umount失效,重新sshfs也不行。这时就需要查找什么进程在占用资源了。

$ fuser -u ~/Desktop/lnmp

通过以上命令就可以找到实际占用挂载目录的进程,退出这些进程就可以umount,重新sshfs挂载。

Search

    Table of Contents