
LaravelをLaradockでインストールする手順
LaravelをDockerでインストールする方法を紹介します。Laradockという便利なものがあって、簡単にいえば、Laravelを動かす時に必要なWebサーバー、PHP、データベースといったものをまるっとインストールしてくれるものです。
では早速やっていきましょう。
開発フォルダの用意
これは個人的な設定ですが、ぼくはdevelopmentフォルダとして下記のようにホームフォルダ(/Users/{ユーザー名}/)直下にdevフォルダを作成しています。このdevフォルダ内にて作業をしていきます。
/Users/pensuke/dev/
LaradockでLaravelを動かすディレクトリ構成
今回は下記のようなディレクトリ構成にしようと思います。myprojectは適宜自分がLaravelで作りたいプロジェクト名にしましょう。ここでは説明のためmyprojectというプロジェクトを動かす手順を解説しています。
laradoc (git clone でできるlaradockフォルダ) - docker-compose.yml - nginx - mysql - ...(省略) myproject (インストールしたLaravelのプロジェクトフォルダ) - app - public - ...(省略)
参考までに、ぼくの場合はこれを先程の/Users/pensuke/dev/
に置いて
という風にしています。
Laradockのインストール
まずLaradockをgithubからクローンしてきます。Laradockフォルダが作成されるのでcdで移動します。
git clone https://github.com/Laradock/laradock.git cd laradock
env-exampleという環境設定ファイルを自分用にコピーします
cp env-example .env
この.envファイルを編集します。今回は、特に設定はいじりません。
(ぼくの場合はsublime textをターミナルから実行できるようにしていてsubl .env
とかで開くように設定しています)
Launch Sublime Text from the command line on OSX · GitHub
laradockのmysqlの設定
Laradockはデフォルトでは最新のmysqlを使用します。今回は5.7を指定して利用しようと思います。(最新のものにすると色々問題が発生する可能性があるので…)
.envファイルでいじっても反映されるとは思うのですが、laradock/mysql/Dockerfile
をいじるのが無難です。下記のように編集しましょう
編集ファイル: laradock/mysql/Dockerfile
FROM mysql:${MYSQL_VERSION} ↓これを下記に編集 FROM mysql:5.7
Databaseや、ユーザー、パスワードの設定もできますが、ここでは無駄なバグを発生させないために割愛します。(DBの複数作成は後ほど書きます。)
laradockのnginxの設定
myproject.local
というURLで自分のLaravelプロジェクトにアクセスできるようにします。
laradock/nginx/sites/laravel.conf.example
というのがあるのでこれをコピーしてmyproject用に書き換えていきます
# laradockフォルダにいるとして cd cd nginx/sites # laravel.conf.exampleをmyproject.confという名前にコピー cp laravel.conf.example myproject.conf
コピーしたmyproject.conf
を編集します。編集箇所は基本的にlaravelと書かれている箇所をmyprojectに書き換えるだけです。編集後のconfファイルは下記です。
server { listen 80; listen [::]:80; server_name myproject.local; root /var/www/myproject/public; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { try_files $uri /index.php =404; fastcgi_pass php-upstream; fastcgi_index index.php; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #fixes timeouts fastcgi_read_timeout 600; include fastcgi_params; } location ~ /\.ht { deny all; } location /.well-known/acme-challenge/ { root /var/www/letsencrypt/; log_not_found off; } error_log /var/log/nginx/myproject_error.log; access_log /var/log/nginx/myproject_access.log; }
hostファイルの編集
myproject.local
でアクセスした時にlocalhost(127.0.0.1)に向くように設定します。/private/etc/hosts
ファイルの一番下に下記を追加してください。
編集ファイル: /private/etc/hosts
::1 myproject.local
これでDocker(Laradock)側の設定は一旦終了です。この状態で、docker-compose up -d nginx mysql workspace
という風にするとmyprojectフォルダのLaravelを見に行ってくます。
Laradockの起動
今回はnginx(webサーバー)、mysql(データベース)、phpmyadmin(データベースを簡単に見れるもの)、workspaceを起動します。
docker-compose up -d nginx mysql workspace
Laravelをcomposerでインストール
Laravelのインストールにはcommposerを使います。composerをインストールして、、と思ったんですがlaradockのworkspaceにはcomposerやnodeがインストールされているとのことなのでそちらを使いましょう。
laradockのworkspaceに入る
まずlaradockのworkspaceに入ります。--user=laradockというのはつけないとrootユーザーとしてログインされてしまって、コマンドをうつと警告が出たりする場合があるのでlaradockというユーザーでログインしています。
docker-compose exec --user=laradock workspace bash
これによってlaradockのworkspace内に入って操作することが可能です。(反対に自分のPCのことをホストという風に言います。)
composer create-project
Workspace内に入れたらcomposerでlaravelをインストールします。最後のmyprojectという部分がプロジェクト名で、そのプロジェクト名のフォルダが作成されてそこにLaravelがインストールされます。
composer create-project --prefer-dist laravel/laravel myproject
インストールが完了したら、myblog.localにアクセスしてみましょう。Laravelの初期状態のページが表示されたらokです。
Laravelのデータベース設定
今度はmyprojectフォルダの中にあるlaravelの.envを編集しましょう。(ややこしいですが、dockerの.envとは別物です。)
編集ファイル: myproject/.env
DB_CONNECTION=mysql DB_HOST=mysql DB_PORT=3306 DB_DATABASE=default DB_USERNAME=default DB_PASSWORD=secret
(HOST側でLaravelを動かしてデータベースに接続する時はDB_HOST=127.0.0.1でいけます。)
ついでにAPP_URLもmyproject.localにしておきましょう。
編集ファイル: myproject/.env
APP_URL=myproject.local
Laravelデフォルトのテーブル作成
Laravelではmigrationファイルというのを用いて、基本的なusersテーブルを作成することができます。
myprojectのフォルダに移動してphp artisan migrateというのを実行してみましょう。ここではworkspace内でmigrateを実行します。
# workspaceに入る docker-compose exec --user=laradock workspace bash # myprojectフォルダに移動してmigrate cd myproject php artisan migrate
これで成功していればusersテーブルとmigrationsテーブル、password_resetsテーブルというのができあがります。
せっかくなのでphpmyadminで確認してみましょう。
laradockでphpmyadminを使う
hpmyadminはlocalhostの8080番ポートに割り当てられています。ブラウザでlocalhost:8080にアクセスしてみましょう
localhost:8080
ログイン情報は下記です。
サーバ: mysql ユーザ名: default パスワード: secret
すると左側の列にdefaultというのがあるのが分かると思います。このテーブルを開いて、先程のテーブルusers, migrations, password_resetsがあればokです。
今回は以上となります。
いろいろと書きましたが、エラーになったときの解決方法など、色々公式のドキュメントにあります。laradockのドキュメントはわりと親切に色々書かれているので困った時は公式のドキュメントを読んでみましょう。