1. 程式人生 > >使用 vagrant + docker 搭建 symfony 開發環境

使用 vagrant + docker 搭建 symfony 開發環境

1.安裝 virtualbox 與 vagrant

官網直接下載安裝包,注意 virtualbox 要使用 5.1 版本,vagrant 使用最新版本。

2.下載 vagrant box

vagrant box add [name] [映象]

vagrant box add ubuntu ubuntu/xenial64

下載速度會很慢,建議複製連結到迅雷裡面下載。

3.使用 vagrant-winnfsd 外掛提升共享目錄效能

vagrant plugin install vagrant-winnfsd

4.初始化映象

選擇目錄,執行 vagrant init ubuntu之後會生成一個 Vagrantfile 檔案。
開啟 Vagrantfile 檔案,修改程式碼:

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
   config.vm.box = "ubuntu"
   # config.vm.network "forwarded_port", guest: 80, host: 8080
   config.vm.network "private_network", ip: "192.168.33.10"
   # 禁用原有的預設的共享目錄
   config.vm.synced_folder '.', '/vagrant', disabled: true
   config.vm.synced_folder "./code", "/www", type: "nfs"
end

修改完之後在當前目錄下建立 code 共享資料夾,此資料夾將對映到 ubuntu 的 /www 目錄。

5.開始執行

vagrant up

6.進入 ubuntu 系統

vagrant ssh

或者使用 xshell 登入,127.0.0.1:2222 。如果需要祕鑰登入則使用 .vagrant\machines\default\virtualbox 這個目錄下的 private_key。之後想通過使用者名稱和密碼登入的話,修改 sshd_config , sudo vi /etc/ssh/sshd_config更改 PasswordAuthenticationyes ,之後就可以通過使用者名稱和密碼登入了,使用者名稱和密碼都是 vagrant

6. 安裝 docker ce

	sudo apt-get update

新增軟體源的 GPG 金鑰

   curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add

向 source.list 中新增 Docker 軟體源

sudo add-apt-repository \
				"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \				
				$(lsb_release -cs) \				
				stable"

安裝 docker

sudo apt-get update
sudo apt-get install docker-ce

啟動 docker

sudo systemctl restart docker

將當前使用者加入 docker 使用者組

sudo usermod -aG docker $USE

之後退出當前終端,重新登入。

7.配置映象加速

sudo vi  /etc/docker/daemon.json
{
"registry-mirrors": [
    "https://registry.docker-cn.com"
    ]
}

之後重啟系統

sudo systemctl daemon-reload
sudo systemctl restart docker

8.檢測 docker 是否執行正確

docker run hello-world

9.安裝 docker-compose

sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

10.構建環境

docker-compose.yml 檔案

version: '3'

services:

### Applications Code Container #############################

    # web:
    #   image: debian:jessie
    #   volumes:
    #     - ./www:/var/www

### PHP-FPM Container #######################################

    php-fpm:
      build:
        context: ./php
      container_name: php
      volumes:
        - ../www:/app
      expose:
        - "9000"

### Nginx Server Container ##################################

    nginx:
      build:
        context: ./nginx
      container_name: nginx
      volumes:
          - ../www:/app
      ports:
          - "80:80"
          - "443:443"
      depends_on:
          - php-fpm

配置好了之後執行 docker-compose up自動構建並啟動
( mysql 使用的是本地PC機器上的 )

11.測試是否成功

由於使用的是 vagrant ,那麼訪問 http://192.168.33.10/ 這個 ip 是之前 在Vagrantfile 中配置的私有 ip。