【Laravel】Laradockで複数プロジェクトを動かす手順
https://laradock.io/getting-started/#B
公式と上の記事を参考にlaradockの開発環境をしてみました。
その記録として、残しておこうと思います。
1プロジェクトに1laradockで増やしていくことを前提とした内容です。
workspace
|_app
|_laradock
|_source
この環境構築の際にものすごくエラーがでたので、エラーだけをまとめた記事を別で作りました。合わせて参考にしていただければ幸いです。
laradock環境構築のエラーと解決策
Laradockをgit cloneする
$ git clone https://github.com/Laradock/laradock.git laradock
envファイルを編集
まずは基本的な設定から。
$ cd laradock
$ cp .env.example .env
以下の部分を変えてください。バージョンはお好みで。
APP_CODE_PATH_HOST=../app
DATA_PATH_HOST=.app/data
COMPOSE_PROJECT_NAME=app
PHP_VERSION=7.3
MYSQL_VERSION=5.7
confファイルを編集
$ cd nginx/sites
$ cp laravel.conf.example app.conf
コピーして内容を変更します。
下記引用しました。こちらに沿ってください。
larave.conf.exampleではlaravelというフォルダで動かすようにかかえれているので、そのlaravel部分をproject1という風に書き換えます。
またproject1.testだとchromeで動かなかったりするのでproject1.localとしています。
(https://pensuke.work/posts/laradock-multiproject/)
また「hostsの設定を行う」という手順もありますが、現在設定はしていますが、自分の環境では上手くいってないので、割愛します。
(個別で設定してるのにlocalhostでも表示されてしまうのです…)
こちらも引用させていただきます。
Nginxでdocker上のサイト設定は行いましたが、これだけではローカルPC上で http://project1.local/にアクセスしてもなにも表示されません。
hostsの最下部に追記しましょう。
編集ファイル: /private/etc/hosts
127.0.0.1 project1.local
::1 project1.local
DBの設定
$ cd mysql/docker-entrypoint-initdb.d/
$ cp createdb.sql.example createdb.sql
この中のファイルを以下のように編集します
CREATE DATABASE IF NOT EXISTS `app` COLLATE 'utf8_general_ci' ;
GRANT ALL ON `app`.* TO 'default'@'%' ;
コメントアウトを外し、2ヶ所変更します。
mysqlコンテナを立ち上げ、DBの内容を確認しましょう
$ docker-compose up -d mysql
$ docker exec -it laradock_mysql_1 bash
# mysql -u root -p
Enter password:
Server version: 5.7.34 MySQL Community Server (GPL)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| default |
| mysql |
| performance_schema |
| sys |
| app |
+--------------------+
6 rows in set (0.00 sec)
自分の作りたいDB名がはいってたらOKです。
アプリを作る or プロジェクトをgit cloneして残りのコンテナを起動
自分の場合はgit cloneしました。
新しく作る場合は他でも紹介されているので割愛します。
$ docker-compose exec --user=laradock workspace bash
# git clone URL
git cloneしてきた場合は.envファイルをコピー&venderファイルを作成してください
$ docker exec -it laradock_workspace_1 bash
# cd app
# cp .env.example .env
# composer install
プロジェクト内の.envファイルがテキストエディタなどで保存できない場合は、
権限を確認して、変更してください。
これを
# ls -l
total 1604
drwxr-xr-x 14 root root 4096 Jun 3 10:27 app
-rw-r--r-- 1 root root 1686 Jun 3 10:27 artisan
省略
こう
# chown -R laradock:laradock /var/www
# ls -l
total 1604
drwxr-xr-x 14 laradock laradock 4096 Jun 3 10:27 app
-rw-r--r-- 1 laradock laradock 1686 Jun 3 10:27 artisan
省略
laravelプロジェクトの.envファイルを編集
laradockのmysqlコンテナを立ち上げる前に設定したDB名にしましょう。
DB_DATABASE=app
migrateする
/var/www# cd app
# php artisan migrate
マイグレーションできない時はmysqlの権限を確認してください
$ docker exec -it laradock_mysql_1 bash
# /var/lib/mysql# ls -l
ちなみにファイル構成はこんな感じでつくったDBが入ってます
root@5120d5325290:/var/lib/mysql# ls
auto.cnf ca.pem client-key.pem ib_buffer_pool ib_logfile1 ibtmp1 performance_schema public_key.pem server-key.pem app
ca-key.pem client-cert.pem default ib_logfile0 ibdata1 mysql private_key.pem server-cert.pem sys
権限がmysql以外になってたら、mysqlに変えましょう
-rw-r----- 1 1000 1000 56 Jun 3 09:47 auto.cnf
-rw------- 1 1000 1000 1676 Jun 3 09:47 ca-key.pem
-rw-r--r-- 1 1000 1000 1112 Jun 3 09:47 ca.pem
省略
# chown -R mysql:mysql /var/lib/mysql
root@5120d5325290:/var/lib/mysql# ls -l
total 188484
-rw-r----- 1 mysql mysql 56 Jun 3 09:47 auto.cnf
-rw------- 1 mysql mysql 1676 Jun 3 09:47 ca-key.pem
これでOK!
再度migrateしましょう
webページが表示されるか確認
ここまできたらあと少しです!
コンテナを全て立ち上げ、webページが表示されるか見てみましょう。
$ docker-compose up -d nginx mysql
APP KEYを作成する
最後にlaravelのエラー画面が出ていたら、APP KEYを作成してください。
# php artisan key:generate
Application key set successfully.
# php artisan config:cache
Configuration cache cleared!
Configuration cached successfully!
これでlaravelが使えるようになっているはずです!