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