PHP
Mac
laravel
LaraDock

LaradockでLaravel開発環境をDocker上に構築する on Mac

概要

Laravelの開発環境をLaradockを用いてDocker上に構築しました。
出来る限りシンプルにできないかと考えてLaradockを使ってみたのですが、
意外と苦戦したりしなかったりしたので今後のための備忘録です。

Laradock

Laradock.io
laradock/laradock - github

A full PHP development environment for Docker.
Includes pre-packaged Docker Images, all pre-configured to provide a wonderful PHP development environment.

セットアップ方法の概要は公式ページにさらさらっと書いてあります。
公式ページを参考にして構築していきます。

環境構築

ディレクトリ構成

ディレクトリの構成は好みによると思いますが、僕は下記のようにしてます。

project-name
    - project-name_app
    - laradock_project-name

project-name_app -> ソースコードディレクトリ
laradock_project-name -> Laradockをcloneしてくるディレクトリ

Laradockの導入とDockerコンテナの起動

Laradockをgithubからclone

今回はプロジェクト単位でLaradockを導入します。
上記の laradock_project-name ディレクトリにLaradockのリポジトリをcloneしてきます。

$ cd my_project
$ git clone https://github.com/Laradock/laradock.git laradock_project-name

Laradockの環境設定

環境設定ファイルのexampleがあるので、それを .env としてコピーします。

$ cd laradock_project-name
$ cp env-example .env

.env ファイルの以下の部分を書き換えます。
その他にも色々と項目がありますが、下記は最低限コンテナを立ち上げるために必要な設定なので参考にしてください。
それ以外は構築したい環境に合わせて書き換えてください。

.env
### Paths #################################################

# Point to the path of your applications code on your host
APP_CODE_PATH_HOST=../project-name_app

# Point to where the `APP_CODE_PATH_HOST` should be in the container. You may add flags to the path `:cached`, `:delegated`. When using Docker Sync add `:nocopy`
APP_CODE_PATH_CONTAINER=/var/www:cached

# Choose storage path on your machine. For all storage systems
DATA_PATH_HOST=~/.laradock_project-name/data

Dockerコンテナの起動

下記のコマンドを実行します。
コンテナのStateがUpになっているのを確認できればOKです。

$ cd laradock_project-name
$ docker-compose up --build -d nginx postgres redis workspace
$ docker-compose ps
            Name                           Command               State                     Ports
-------------------------------------------------------------------------------------------------------------------
laradock-codenote_nginx_1       nginx                            Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
laradock-codenote_php-fpm_1     docker-php-entrypoint php-fpm    Up      9000/tcp
laradock-codenote_postgres_1    docker-entrypoint.sh postgres    Up      0.0.0.0:5432->5432/tcp
laradock-codenote_redis_1       docker-entrypoint.sh redis ...   Up      0.0.0.0:6379->6379/tcp
laradock-codenote_workspace_1   /sbin/my_init                    Up      0.0.0.0:2222->22/tcp

ここまでの動作確認

ブラウザでlocalhostにアクセスして、nginxの404エラーが出ていれば大丈夫です。

Laravelの導入

workspaceの起動

workspaceというコンテナイメージがLaradockには用意されています。
workspaceはLaravelに必要なツールを一式用意してくれます。
composerなどのコマンドを叩く時はworkspaceを通して叩くことになります。

$ docker-compose exec workspace bash

Laravelのインストール

composerを利用してLaravelの新規プロジェクトを作成します。

$ composer create-project --prefer-dist laravel/laravel ./

Laravelの環境設定

Laravelのプロジェクトディレクトリに .env ファイルが作成されています。
ここに記載されているのがLaravelの環境設定になります。
Laradockの .env ファイルに記載した設定を同様に記載してください。

動作確認

DBの設定が上手く出来ているかどうかは、 php artisan migrate などを走らせて確認してください。
最後に、ブラウザでlocalhostにアクセスして、Laravelのスタート画面が表示されていれば問題ないです。