PHP
Linux
Ubuntu
laravel
LaraDock

[Ubuntu] Laravel5.5をLaradockで導入してみた件

現状の環境

  • Ubuntu (v16.04.3 LTS)
  • PHP (v5.6.31)

「Laravel5.5」に求められる環境

  • PHP (>= v7.0.0)

なぜLaradockが必要になったか

理由は簡単で、「PHP 7」が必要だからです。
かといってサーバー全体のPHPバージョンをアップグレードするわけにもいかない...

そこで「Docker」というわけです。
かつLaravelに特化した「Laradock」が良いじゃないかとなったわけです。

すごくシンプル。

まずはDockerのインストール

「Laradock」を動かす為には大元のDockerが無いと話になりません。

公式ドキュメントにインストール方法が記載されてますね。

$ sudo apt-get update

$ sudo apt-get install \
linux-image-extra-$(uname -r) \
linux-image-extra-virtual

$ sudo apt-get update

$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

$ sudo apt-key fingerprint 0EBFCD88

$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

$ sudo apt-get update

$ sudo apt-get install docker-ce

正しくインストールされていれば$ docker -vでDockerのバージョンが出力されると思います。

お待たせ「Laradock」導入

  1. 任意のディレクトリに移動して、「Laradock」をクローン

    $ git clone https://github.com/LaraDock/laradock.git
    $ cd laradock
    
  2. Laravel用の.envファイルを用意

    $ cp env-example .env
    
  3. ローカルデータ領域の用意

    $ mkdir -p .laradock/data
    
  4. 必要な情報を.envファイルに書き込む

    .env
    #14
    + PHP_FPM_VERSION=56
    
    #24
    - DATA_SAVE_PATH=~/.laradock/data
    + DATA_SAVE_PATH=.laradock/data
    
    #62
    - WORKSPACE_INSTALL_XDEBUG=false
    + WORKSPACE_INSTALL_XDEBUG=true
    
    #99
    - PHP_FPM_INSTALL_XDEBUG=false
    + PHP_FPM_INSTALL_XDEBUG=true
    
    #136
    - APACHE_HOST_HTTP_PORT=80
    + APACHE_HOST_HTTP_PORT=8080
    
    #146
    - MYSQL_VERSION=8.0
    + MYSQL_VERSION=5.5
    
    #333
    + DB_HOST=mysql
    
  5. docker-compose.ymlを書き換える

    docker-compose.yml
    #92
    - dockerfile: "Dockerfile-${PHP_VERSION}"
    + dockerfile: "Dockerfile-${PHP_FPM_VERSION}"
    
    #96
    - ./php-fpm/php${PHP_VERSION}.ini:/usr/local/etc/php/php.ini
    + ./php-fpm/php${PHP_FPM_VERSION}.ini:/usr/local/etc/php/php.ini
    
  6. Apache2の設定

    $ cd apache2/sites/
    $ cp sample.conf.example laravel.conf
    $ vim laravel.conf
    
    laravel.conf
    #2
    - ServerName sample.test
    + ServerName laravel.com
    
    #3
    - DocumentRoot /var/www/sample/public/
    + DocumentRoot /var/www/laravel/public/
    
    #6
    - <Directory "/var/www/sample/public/">
    + <Directory "/var/www/laravel/public/">
    
  7. MySQLの設定

    $ vim mysql/DockerFile
    
    DockerFile
    #1
    - ARG MYSQL_VERSION=8.0
    + ARG MYSQL_VERSION=5.5
    
  8. PHP-FPMの設定

    $ vim php-fpm/xdebug.ini
    
    xdebug.ini
    #4
    - xdebug.remote_connect_back=1
    + xdebug.remote_connect_back=0
    
    #8
    - xdebug.remote_autostart=0
    + xdebug.remote_autostart=1
    
    #9
    - xdebug.remote_enable=0
    + xdebug.remote_enable=1
    
    #10
    - xdebug.cli_color=0
    + xdebug.cli_color=1
    
  9. Workspaceの設定

    $ vim workspace/xdebug.ini
    
    xdebug.ini
    #4
    - xdebug.remote_connect_back=1
    + xdebug.remote_connect_back=0
    
    #8
    - xdebug.remote_autostart=0
    + xdebug.remote_autostart=1
    
    #9
    - xdebug.remote_enable=0
    + xdebug.remote_enable=1
    
    #10
    - xdebug.cli_color=0
    + xdebug.cli_color=1
    
  10. ローカルの設定
    Laradocのapache2に記述したServerNameで名前解決できるようにローカルのhostsを編集。

    hosts
    + {サーバーIP} laravel.com
    

本題Laradockの構築

初回起動時は結構時間がかかりますのでコーヒーの準備を...

# Dockerコンテナの起動
$ docker-compose up -d workspace

# コンテナに入る
$ docker-compose exec workspace bash

# laravelプロジェクトの作成
$ composer create-project --prefer-dist laravel/laravel laravel

# 一旦コンテナから退出
$ exit

# コンテナを停止
$ docker-compose stop

# apache2,mysql,php-fpmのコンテナを起動
$ docker-compose up -d apache2 mysql php-fpm

docker-compose upをした後に、再度設定を変更した場合は以下のコマンドで反映されます。

$ docker-compose build {反映したい物 ex. apache2}

完成

laravel.com:8080と叩けば恐らくLaravelのページが開かれるはずです。

もしエラーページが表示された場合はそのエラーにしたがって解決しましょう。
*当方Laravel恒例のPermission Errorが発生しており、以下のサイトを参考に解決しました!

Laravelのパーミッションを適切に設定