windows使用docker工具箱搭建前端开发环境。使用npm在共享目录下安装前端依赖时,报错无法使用符号链接。这里有一个帖子专门讨论这个问题。有兴趣的可以看看:https://askubuntu.com/questio...以上方法我都试过了,发现只有这个有效:$npmi--no-bin-links但是这个解决方案会带来另一个问题:npmrundev这些命令将不可用,因为这个共享目录不支持符号链接,而'npmrundev'需要软链接。解决办法是用vagrant管理virtualBox,然后开一个centos虚拟机,在centos中使用docker。这样共享目录是vagrant配置的,默认是“/vagrant”,也就是Vagrantfile所在的目录。vagrant共享的目录支持符号链接,问题解决。在vagrant中添加配置允许符号链接vb.customize["setextradata",:id,"VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant","1"]#允许符号链接进来,如何配置vagrant?对于一个前端开发的我来说,整个docker其实还是比较费力的,因为我很少接触环境的配置,也不习惯黑暗的终端。接下来分享我的配置。首先,安装vagrant和virtualBox。这是百度。不过需要注意的是windowspowershell要更新到powershell4.x,.net也要更新。然后,把vagrantfile放到和项目目录同级,提前下载好centos.box,放到和项目同级目录下,用shell执行:$vagrantupvagrantboxdownload:https://app.vagrantup.com/box...这是我的Vagrantfile,大家可以参考:#-*-mode:ruby??-*-#vi:setft=ruby:#VagrantfileAPI/语法版本。除非您知道自己在做什么,否则请勿触摸!VAGRANTFILE_API_VERSION="2"Vagrant.configure(VAGRANTFILE_API_VERSION)执行|config|config.vm.box="../centos7.box"config.vm.provider:virtualboxdo|vb|vb.name="mbannianhui"vb.customize["modifyvm",:id,"--memory",1024]#修改虚拟机内存vb.customize["setextradata",:id,"VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant","1"]#允许符号链接endconfig.vm.network:private_network,ip:"192.168.33.10"#分配ipconfig.vm.network:forwarded_port,guest:2333,host:2333#设置端口config.vm.provision:shell,:inline=><<-EOT##安装docker:http://www.runoob.com/docker/centos-docker-install.htmlsudoyumupdatecurl-fsSLhttps://get.docker.com-oget-docker.shsudoshget-docker.shsudosystemctlstartdocker#启动dockersudosystemctlenabledocker#docker随系统启动启动EOTend这样,在启动的虚拟机中,docker已经安装好查看docker是否安装成功:sudodocker-vsomedocker命令:sudodockerrun-v/vagrant:/app-p3000:3000--namedemo-itd--add-hostwww.demo.com:127.0.0.1--restartunless-stoppeddocker。sitename.net/libname/imagedescription:-v/vagrant:/app#映射目录;'/vagrant':vagrant默认的共享目录,也就是本机Vagrantfile文件所在的目录-p3000:3000:hostPort:containerPosrt,指定端口--namedemo给容器起个名字-itd相当于-i-t-d:-i以交互模式运行容器,-t为容器重新分配一个伪输入终端,-d在后台运行容器--add-hostwww.demo。com:127.0.0.1同windows配置主机文件--restartunless-stopped容器崩溃重启,除非手动停止docker.sitename.net/libname/image远程仓库的地址,也可以是名称本地图像的名称或官方图像的名称。如果本地没有这个镜像,先拉问题:如何访问运行在docker容器中的服务?以上面为例,docker运行时指定端口后,在浏览器中输入:192.168.33.10:3000
