[TOC]
## Vagrant
* vagrant 是使用 Ruby 開發,基于 VirtualBox 等虛擬機管理軟件的接口,提供了一個可配置、輕量級的便攜式虛擬開發環境。
* 使用 Vagrant 管理的虛擬機具有良好的可移植性,并且可以簡單的使用配置文件 `Vagrantfile` 來配置虛擬機,縮短本地開發環境的搭建時間。
## Docker
* Docker 是一個的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然后發布到任何流行的 Linux 或 Windows 機器上。
* 更快速的啟動時間
* 一致的運行環境
* 更輕松的遷移
* 持續交付和部署
## 一品開發環境
### 目錄結構
~~~
docker_vagrant_centos7/
├─bin/ 預裝二進制目錄,初次使用的時候會拷貝底下文件到虛擬機 /usr/local/bin
│ ├─composer
│ └─docker-compose
├─data/ 掛載到虛擬機 /data 路徑
│ ├─nginx/ Nginx 配置目錄
│ │ └─vhost/ Nginx 項目配置
│ └─scripts/ 輔助腳本,一般用來一鍵創建本地項目
│ └─teach.epweike.net.sh
├─provision/
│ └─bootstrap.sh 虛擬機首次創建時執行的腳本,用來執行一些初始化命令
├─config.yaml.example 示例配置文件
├─init.bat windows 初始化腳本
├─init.sh linux 初始化腳本
├─.gitattributes
├─.gitignore
├─Vagrantfile vagrant 配置文件
└─README.md README文件
~~~
### 啟動流程

### 注意事項
* windows 必須要 powershell 版本大等于 3.0,所以在 win7 可能需要安裝 powershell 更新,安裝之前最好將電腦的補丁打完整,以免被利用 powershell 挖礦,導致電腦卡慢。
* windows 初始化文件 init.bat 必須使用管理員權限運行,否則可能會導致文件掛載在一段時間未使用自動斷開。
* linux 下需要安裝 NFS 服務來支撐目錄映射。
* 宿主機掛載的路徑不能包含空格和中文
### 使用步驟
```
# 1.檢出項目
git clone http://git.epweike.net:3000/epwk/docker_vagrant_centos7.git
# 2.windows 以管理員權限執行 init.bat,linux 執行 init.sh
// 如果沒報錯,vagrant 會自動啟動起來,如果報錯了,可以協助提交 issue 或者提交 pull request。
# 3.連接虛擬機
vagrant ssh
# 4.關閉虛擬機
exit // 退出虛擬機
vagrant halt // 關閉虛擬機
```