windows使用docker toolbox,搭建前端开发环境时,在共享目录使用npm安装前端依赖时,发现报错,没法使用符号链接。html
https://askubuntu.com/questio...前端
我试过了上面全部的法子,发现只有这条有用:docker
$ npm i --no-bin-linksshell
可是这种解决方式会带来另一个问题:npm run dev 这些命令将没法使用,由于这个共享目录不支持符号链接,而‘npm run dev’是须要软链接的。npm
使用vagrant管理virtualBox,而后开一个centos虚拟机,centos里使用docker就能够了。这样共享目录由vagrant配置,默认是“/vagrant”,也就是Vagrantfile所在目录。使用vagrant共享出来的目录是支持符号链接的,问题解决了。ubuntu
在vagrant里添加配置,容许符号连接windows
vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"] #容许符号连接
对于一个前端开发来讲,整一个docker其实都挺费劲了,由于平时不多接触环境方面的配置,对于黑洞洞的终端很不习惯。接下来分享一下个人配置。centos
首先,安装vagrant、virtualBox。这个自行百度。不过须要注意的是,windows powershell要更新到powershell 4.x,.net 也要更新。浏览器
而后,讲vagrantfile放在项目目录同级,提早下载好centos.box,放在与项目同级目录,使用shell执行:ruby
$ vagrant up
vagrant box下载:
https://app.vagrantup.com/box...
这是个人Vagrantfile,能够参考一下:
# -*- mode: ruby -*- # vi: set ft=ruby : # Vagrantfile API/syntax version. Don't touch unless you know what you're doing! VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "../centos7.box" config.vm.provider :virtualbox do |vb| vb.name = "mbannianhui" vb.customize ["modifyvm", :id, "--memory", 1024] #修改虚拟机内存 vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"] #容许符号连接 end config.vm.network :private_network, ip: "192.168.33.10" #分配ip config.vm.network :forwarded_port, guest: 2333, host: 2333 #设置端口 config.vm.provision :shell, :inline => <<-EOT # # 安装docker:http://www.runoob.com/docker/centos-docker-install.html sudo yum update curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo systemctl start docker #启动docker sudo systemctl enable docker #docker随系统启动而启动 EOT end
这样,起来的虚拟机里,docker已经安装好了。查看docker是否成功安装:
sudo docker -v
一些docker命令:
sudo docker run -v /vagrant:/app -p 3000:3000 --name demo -itd --add-host www.demo.com:127.0.0.1 --restart unless-stopped docker.sitename.net/libname/image
说明:
-v /vagrant:/app # 映射目录;'/vagrant':vagrant默认的共享目录,也就是本机放置Vagrantfile文件的目录 -p 3000:3000 : hostPort:containerPosrt ,指定端口 --name demo 给容器起名字 -itd 至关于-i -t -d : -i 以交互模式运行容器,-t为容器从新分配一个伪输入终端,-d后台运行容器 --add-host www.demo.com:127.0.0.1 和windows配置host文件同样 --restart unless-stopped 容器崩坏重启,除非手动stop docker.sitename.net/libname/image 远程仓库的地址,这里也能够是本地镜像名字,或者官方镜像名字。若是本地没有这个镜像,则先拉取
问题:如何访问docker容器跑起来的服务?以上面为例,docker run时指定端口以后,在浏览器输入:192.168.33.10:3000