Docker で Laravel の開発環境を構築しようとしたときに、 Laradock というものを見つけて、とても便利だったので使い方の復習も兼ねて共有。
※ Docker はインストール済み想定
参考:PHPフレームワーク「Laradock」で、手軽にLaravel+Dockerな開発環境を構築する
構築する環境
- PHP
- MySQL
- apache
各バージョンは簡単に変更できるので後ほど。
作業ディレクトリの作成
$ mkdir my_project
$ cd my_project
$ mkdir src
my_project ディレクトリの中に Laradock をクローンする。
src ディレクトリに、コンテナにインストールする Laravel をマウントする。
Laradock をクローン
$ git clone https://github.com/laradock/laradock.git
設定ファイルを編集
env-example
をコピーして .env
を作成する。
$ cp env-example .env
.env ファイルを編集する。
// 変更前
APP_CODE_PATH_HOST=../
// 変更後
APP_CODE_PATH_HOST=../src/
PHPのバージョンを変更する
.env の PHP_VERSION
を編集する。
7系と 5.6 が選べるみたいですね。
# Select a PHP version of the Workspace and PHP-FPM containers (Does not apply to HHVM). Accepted values: 7.2 - 7.1 - 7.0 - 5.6
PHP_VERSION=7.2
MySQL を変更する
.env を編集
// 変更前
MYSQL_VERSION=latest
// 変更後
MYSQL_VERSION=5.7
※ ちなみに MySQL 8系から認証が変わったらしく、 Laradock の mysql ディレクトリの設定を変更しないと、 PHP からコネクトするときにエラーになります。
めんどくさい人は5.7で作業しておいてください。
私は変更前に docker-compose up
8系で作業してしまって、5.7に変更したのに反映されず困りました。
~/.laradock/data/mysql
にデータが残っていたみたいです。
.env を 5.7
に編集してから以下の作業を行いましょう。
// 止める
$ docker-compose stop
// フォルダを削除
$ rm -r ~/.laradock/data/mysql
// 起動
$ docker-compose up -d mysql
Docker コンテナの起動
nginx
を使いたい場合は apache2
を置き換えるだけでうまくいくはずです。
$ docker-compose up -d apache2 mysql
http://localhost
にアクセスすると、404
か ディレクトリ一覧が表示されます。
nginx やったら 404 かな?
Workspace コンテナを起動して接続
起動します。
$ docker-compose up -d workspace
接続します。
$ docker-compose exec workspace bash
接続して Laravel とかインストールしてみましょう!
Laravel のインストール
composer はすでにインストールされています。
パスも通っています。
$ composer create-project --prefer-dist laravel/laravel ./
インストール終わったら、 http://localhost/public にアクセスしてみましょう。
Laravel の初期画面が表示されていますね?
コンテナから exit して、最初に作成した src
ディレクトリに Laravel プロジェクトがマウントされているはずです。
MySQL の設定
.env
ファイルを編集
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret
変えたい場合は Laradock
ディレクトリの .env
ファイルの mysql
の設定が書かれた項目をいじってください。
PhpMyAdmin を使う
$ docker-compose up -d phpmyadmin
以上です。
http://localhost:8080
へアクセス!!!
DBを確認する
以下のコマンドでさくっと作ってもらいましょう。
$ php artisan migrate
MySQL を確認するとテーブルが作成されているはずです。
最後に
今回は触れてませんが、 redis を使う場合なども docker-compose up
で redis を追加して、 Laravel の .env に設定を書いてあげるだけです。
便利ですね!!!