はじめに
Laravelでの開発環境を構築する際の手順をまとめました。
今回は、laradockを使ってみたかったので、laradockを使用して環境構築します。
※ laradockとは? http://laradock.io/
- Laravel(PHP)のプロジェクトをDocker上で動作させるためのワンダフルな環境
- Dockerを用いてlaravelの環境を作るために必要なものがほぼ全てパッケージ化されている
- PHP, nginx, MySQLやミドルウェア等、Laravelの実行に必要な環境が整っている。
前提環境
- Windows 10 Professional
- PHP7.3
- Dockerインストール済み
- gitインストール済み
ゴール
- Laradockを使用して、Laravelの開発環境を構築する。
- 開発環境としては、以下のような構成にします。
- Laravel(Webアプリケーションフレームワーク)
- mysql(DB)
- nginx(Webサーバ)
手順
1. プロジェクトディレクトリを作成
- 任意の場所にプロジェクトディレクトリを作成します。どこでもOK。
$ mkdir todo-list
2. プロジェクトディレクトリに移動し、laradockをプロジェクトディレクトリ直下にclone
-
Githubからlaradockをcloneしてきます。cloneが終わると、プロジェクトディレクトリ直下に「laradock」というディレクトリが作成されます。
$ git clone https://github.com/laradock/laradock.git
-
clone直後のプロジェクトディレクトリ階層: laradockディレクトリ下に色々入ってます
3. laradockディレクトリに移動し、「.env」ファイルを作成、編集
- laradockディレクトリ直下の「env-example」ファイルをリネームして作成する
- .envファイル = 環境設定ファイル
- 設定ファイルのサンプルをベースに置き換える為、設定ファイルをコピーしておく。
$ cd laradock/
$ cp env-example .env
3-1. envファイルの設定
- .envファイル内の値を編集していきます。
【設定詳細】
I. envファイル内の「APP_CODE_PATH_HOST」の値を変更
5 ### Paths #################################################
6
7 # Point to the path of your applications code on your host
8 APP_CODE_PATH_HOST=../todo-app
9
↑上記記述で、「todo-list/todo-app/」下の階層がアプリケーションのコードを格納するディレクトリとみなされるようになる。
-
2020年11月時点では.envファイルに書いてあるPHPのバージョンは「7.3」でした。
- PHP_VERSION=7.3
-
mysqlは「その時点の最新版」
- MYSQL_VERSION=latest
4. docker-composeでコンテナを立ち上げる:nginx と mysqlを立ち上げ
-
laradockディレクトリに移動し、コマンドを実行。コンテナを起動します。
$ docker-compose up -d nginx mysql
※初回起動は時間がかなり!!かかります。気長に待ちましょう。10分以上は間違いなくかかる! -
docker-compose up でエラーが出たら、下記参考URLの内容を参照ください。
https://qiita.com/blueray777/items/44e25dc04ed1ab5c4cc8
・Laradockのdocker-compose upで出会ったエラー達 -
コンテナの確認
$ docker-compose ps -a
Name Command State Ports
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1 dockerd-entrypoint.sh Up 2375/tcp, 2376/tcp
laradock_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp, 33060/tcp
laradock_nginx_1 /docker-entrypoint.sh /bin ... Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:81->81/tcp
laradock_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp
laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp, 0.0.0.0:3000->3000/tcp, 0.0.0.0:3001->3001/tcp, 0.0.0.0:4200->4200/tcp, 0.0.0.0:8001->8000/tcp, 0.0.0.0:8080->8080/tcp
5. Laravelプロジェクトの作成
-
コンテナ起動後は、コンテナ内に入ってLaravelプロジェクトを生成します。
laradockはworkspaceという全ての操作が可能なコンテナが用意されるので、ここから操作していきます。 -
コンテナ内に入る(laradockユーザー/rootユーザー)
$ winpty docker-compose exec --user=root workspace bash
- Laradockに入れた時の表示
- Laravelプロジェクトのダウンロード
- コンテナに入ったら/var/www配下にいますので、composerを使用してプロジェクトを生成します。
laradock@fb36cc3540cd:/var/www$ composer create-project laravel/laravel todo-app
※ダウンロードに時間かかる
6. プロジェクトの生成確認
-
http://localhost/ にブランチからアクセス確認
- Laravelのデフォルト画面が出ることを確認
-
404 Not Foundが表示された場合
- 3-1. envファイルの設定 で、.envファイルの「APP_CODE_PATH_HOST」のみ変更しましたが、「APP_CODE_PATH_CONTAINER」のパスも変更する必要がありました。(共有ディレクトリのマウント設定)
5 ### Paths #################################################
6
7 # Point to the path of your applications code on your host
8 APP_CODE_PATH_HOST=../todo-app
9
10 # Point to where the `APP_CODE_PATH_HOST` should be in the container
11 APP_CODE_PATH_CONTAINER=/var/www/todo-app
- nginxのroot変更
- nginxの設定を変更します。ドキュメントルートを変更(13行目:root 以下のパスを変更)
$ vi nginx/sites/default.conf
1 server {
2
3 listen 80 default_server;
4 listen [::]:80 default_server ipv6only=on;
5
6 # For https
7 # listen 443 ssl default_server;
8 # listen [::]:443 ssl default_server ipv6only=on;
9 # ssl_certificate /etc/nginx/ssl/default.crt;
10 # ssl_certificate_key /etc/nginx/ssl/default.key;
11
12 server_name localhost;
13 root /var/www/todo-app/public;
14 index index.php index.html index.htm;
- envファイル変更後は、コンテナを再起動してください。
$ docker-compose stop
$ docker-compose up -d nginx mysql
まとめ
- ここまでで、laradock環境で構築したLaravelの初期画面表示ができるようになりました。
プロジェクトディレクトリの階層はこんな感じです。
todo-list/
| todo-app/
└ laradock/
todo-appディレクトリ配下には、Laravelの各種ソースが格納されています。
dockerの知識や、Nginx等のインフラ知識がなくても、ここまではすんなりとこれるのではないかと思います。次の記事では、今回構築したLaravel開発環境をベースに、簡単なWebアプリケーションを構築して実行してみたいと思います。
次回!
- DB設定
- テーブルを作成、データ投入→ DBのデータを画面(ビュー)で一覧表示させてみる。
参考にしたサイト
Laravelで簡単なページを作成するまで https://qiita.com/tasogarei/items/1e0a3577a9fae7e519ba