LoginSignup
0
0

More than 1 year has passed since last update.

laradockで複数プロジェクトの環境構築をする

Posted at

【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が使えるようになっているはずです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0