Laradock環境構築


Mac OS X Catalina 10.15.4
初めて頑張ってLaradockで環境構築していきたいと思います。
おかしなところがありましたらぜひ指摘してください。

Laradockをクローン

まずは専用のディレクトリ作成して移動します。

$ mkdir laratest
$ cd laratest

そこでgit clone。

$ git clone https://github.com/LaraDock/laradock.git

LaraDockの.envファイル作成

そしたらlaradockというファルが作成されているはずなので、そこに移動します。

$ cd laradock

その中にあるenv-exampleファイルを.envとしてコピーします。

$ cp env-example .env

laraDockファイルの中はいろんなソフトがめっちゃ入ってます。
nginx, mysql, php, laravelだけなら特に.env操作の必要はなさそう。

Laradockの環境編集

Laradock内の.envファイルを編集します。
ただ公式ページ様では次のように.envファイル内に追加する記載があります。

DB_HOST=mysql
REDIS_HOST=redis
QUEUE_HOST=beanstalkd

これ以外にも少し必要。

1、APP_CODE_PATH_HOST

[ ../ ] → [ ../laraapp ]に変更。プロジェクト名に変更ってことですね。

2、DATA_PATH_HOST

[ ~/.laradock/data ] → [ .laradock/data ] に変更。

3、MYSQL

[ latest ] → [ 5.7 ]に変更。8.0系に比べて5.7系が安定しているみたいです。
MYSQL_DATABAE
MYSQL_USER
MYSQL_PASSWORD
とかはなんでも良さそうだけど、他の設定と揃える必要がある。
忘れないようにしないと。
とりあえずLaraDock内の.envファイルの設定と他を揃えます。

Laradock起動

Laradockを立ち上げて確認してみます。
コンテナ起動がupで、オプションで-dを付けるとバックグラウンドで動いてくれます。
とりあえずならnginxとmysqlを動かせばいいかと。

$ docker-compose up -d nginx mysql

...

Creating laradock_mysql_1            ... done
Creating laradock_docker-in-docker_1 ... done
Creating laradock_workspace_1        ... done
Creating laradock_php-fpm_1          ... done
Creating laradock_nginx_1            ... done

初回の起動のときはかなりpullしてくるので結構時間かかります。
完了したら上のような表示が出るはず。
起動してるか確認してみます。

この中にlaradock_workspace_1コンテナが立ち上がってるのが確認できます。
このコンテナの中に移動します。

$ docker exec -it laradock_workspace_1 bash

root@74e5ba95e1d4:/var/www#

プロジェクト作成

移動できたら、まずはアップデートしときます。

root@74e5ba95e1d4:/var/www# apt-get update

終わったら、Laravelプロジェクトを作成します。下の例ではlaraappという名前で作ります。

root@74e5ba95e1d4:/var/www# composer create-project "laravel/laravel=6.0.*" laraapp

現状(2020/4/27)では6.0系がLTSでサポート長いので、これを選択しておきます。
https://readouble.com/laravel/7.x/ja/releases.html

作成が完了したら、ファイルが存在しているのを確認して、一旦コンテナをでます。

root@74e5ba95e1d4:/var/www# exit
$ docker-compose stop

Laravelプロジェクト内の環境

プロジェクト内に移動して、.envファイルを調整します。
さっきのやつと揃える。

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret

パーミッション設定

webサーバーからの書き込み権限を与えるためにパーミッション設定します。
再度コンテナに入り、プロジェクトフォルダに移動します。

root@74e5ba95e1d4:/var/www/laraapp# chmod 766 storage
root@74e5ba95e1d4:/var/www/laraapp# chmod 766 bootstrap/cache

コンテナ再起動

docker-compose restart

マウント確認

laradock_nginx_1laradock_workspace_1をdocker inspectして、マウント確認

$ docker inspect laradock_nginx_1

...

"Mounts": [

...
            {
                "Type": "bind",
                "Source": "/Users/ユーザー/hoge/laratest/laraapp",
                "Destination": "/var/www/",
                "Mode": "cached",
                "RW": true,
                "Propagation": "rprivate"
            },
...
$docker inspect laradock_workspace_1

...

"Mounts": [

            ...

            {
                "Type": "bind",
                "Source": "/Users/ユーザー/hoge/laratest/laraapp",
                "Destination": "/var/www/",
                "Mode": "cached",
                "RW": true,
                "Propagation": "rprivate"
            },

...

この状態でlocalhostに接続してみます。

はい、なんかおかしいですね。

nginx

laradockに移動して、ファイルを編集します。エディタはvimじゃなくてもいいです。

$ vim nginx/sites/default.conf

server {

    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    # For https
    # listen 443 ssl default_server;
    # listen [::]:443 ssl default_server ipv6only=on;
    # ssl_certificate /etc/nginx/ssl/default.crt;
    # ssl_certificate_key /etc/nginx/ssl/default.key;

    server_name localhost;
    root /var/www/public;    //ここがこうなってるはずなので、
    index index.php index.html index.htm;

    server_name localhost;
    root /var/www/laraapp/public;    //こうする プロジェクト名いれる
    index index.php index.html index.htm;

nginxのドキュメントルートを変更するとのこと。

これで接続してみます。

やっと接続できました...
長かったですが、ありがとうございました。

参考記事

こちらの記事等をめちゃくちゃ参考にさせていただきました。
ありがとうございました。
LaradockでDockerによる開発環境を手軽に構築
Laradockを使ったLaravel開発環境構築
Laravel6 Laradockを使ってDocker環境構築を初めからやってみる