仮想マシン(Centos) + docker + laravelの開発環境構築


背景

macでもwindowsでも同じ環境でdockerを使ってLaravelの
開発ができる環境を作りたかったのでトライ。疲れた。。。

Vagrantのインストール

ここからインストール

Virtualboxのインストール

ここからインストール

CentOS7のboxを追加

# vagrant box add [vagrantのbox名] [boxのURL]
# boxのURLはhttp://www.vagrantbox.es/を参照
# 時間がかかるのでお茶でも飲みながら待ちます
$ vagrant box add https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.2/vagrant-centos-7.2.box

# ↓色々でてきて、最終的にこんなのが出ていればOK
# box: Successfully added box 'centos7' (v0) for 'virtualbox'!

追加したboxで仮想環境構築

# vagrantを使うためのディレクトリを作成
# 作成する場所はどこでもOK↓下では~/VM/に作成
$ mkdir ~/VM # ホームディレクトリにVMフォルダを作成
$ mkdir ~/VM/centos7 # 上で作ったVMフォルダの中にcentos7ディレクトリを作成
$ cd ~/VM/centos7 # 上で作ったディレクトリに移動

# vagrant init [vagrant box addで追加したvagrantのbox名]
$ vagrant init centos7 # Vagrantfileを生成

Vagrantfile修正

vi Vagrantfile

- # config.vm.network "private_network", ip: "192.168.33.10"
+ config.vm.network "private_network", ip: "192.168.33.10"

- # config.vm.synced_folder "../data", "/vagrant_data"
+ config.vm.synced_folder "./sample", "/home/vagrant/sample"

仮想マシンと同期するディレクトリ作成

$ mkdir ~/VM/centos7/sample

仮想マシン起動

$ vagrant up # 仮想マシン起動
$ vagrant ssh # 仮想マシンにログイン

terminalの左側が↓こうなってればOK

[vagrant@localhost ~]$
windowsの方はデフォルトではsshが使用できないので、
teratermをインストール + vagrant-teratermのプラグインをインストールすると簡単だと思います。
- teratermのインストール
- vagrant-teratermプラグインのインストール
$ vagrant plugin install vagrant-teraterm

上の作業ができたら、vagrant sshの代わりにvagrant teratermをコマンドプロンプトで実行
teratermが起動して、画面の左側が[vagrant@localhost ~]$になってればOK

dockerの環境構築

ここから基本的に仮想マシンでの作業

リポジトリの追加

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

dockerのインストール

$ sudo yum install docker-ce-18.03.1.ce-1.el7.centos # バージョンを指定してインストール
$ sudo systemctl start docker # dockerを起動
$ sudo systemctl enable docker # 仮想マシン起動時にdockerも自動起動

docker-composeのインストール

$ sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

# sudo しなくてもdocker使えるように現在のユーザーをdockerグループに入れる
$ sudo usermod -aG docker $USER

設定を反映させる

$ exit # 仮想マシンからログアウト
$ vagrant reload # 仮想マシンを再起動
$ vagrant ssh # 仮想マシンにログイン

Laradocの導入

# まずはgitが必要
$ sudo yum install git # バージョンが古いけど気にしない

dockerイメージ(laradoc)の取得

$ git clone https://github.com/LaraDock/laradock.git
$ cd laradock
$ cp env-example .env
$ docker-compose up -d nginx mysql # めっちゃ時間かかる

コンテナへログイン

docker exec -it laradock_workspace_1 /bin/bash

Laravelのインストール

$ composer create-project --prefer-dist laravel/laravel sample "5.5.*"
$ exit # コンテナからログアウト

nginxの設定変更(2箇所)

$ vi /home/vagrant/laradock/nginx/sites/default.conf

- server_name localhost;
+ server_name 192.168.33.10; # Vagrantfileに設定したIP

- root /var/www/public;
+ root /var/www/sample/public;

設定を反映させる

$ docker-compose stop
$ exit # 仮想マシンからログアウト
$ chmod -R 777 ~/VM/centos7/sample/storage/
$ vagrant reload

dockerを起動

$ vagrant ssh
$ cd laradock
$ docker-compose up -d nginx

192.168.33.10にアクセスしてLaravelが表示されればOK!!

あとは自分のパソコンの/VM/centos7/sample/の中をいじって開発を進めましょう!!