出于现实的考虑,不得不使用多台性能不怎么样的电脑一起玩耍,主要还是为了分摊机器的内存。最先考虑到的是 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
挂载。