Laravelをローカルに展開する（過去の記事の間違いを指摘しつつ）

LaravelをローカルのPCに展開する。
導入するサービスは
WEBサーバー：Nginx
DBサーバー：MySQL
DBクライアントツール：phpMyAdmin

環境は、
MAC OS Catalina ver.10.15.7 (19H1217)
Docker for MACはインストール済み。
laradock % docker --version
Docker version 20.10.6, build 370c289

参考にしたサイトは
https://tadaken3.hatenablog.jp/entry/laradock-laravel


作業用のディレクトリを作成し、そこでgithubからクローンする。

Docker用のディレクトリを作ってあるので、その下に
mkdir lara-heroku-test3
でディレクトリを作る。
中に入って、
lara-heroku-test3 % git clone https://github.com/laradock/laradock.git
で、ファイルを展開する。
すると、
lara-heroku-test3 % ls -al
total 0
drwxr-xr-x    3 hnakase  staff    96  6 27 01:32 .
drwxr-xr-x   16 hnakase  staff   512  6 27 01:24 ..
drwxr-xr-x  101 hnakase  staff  3232  6 27 01:37 laradock
と、ディレクトリが出来ているので、中に入る。
他のサイトには、
% cp env-example .env
と書いてあるのだが、
laradock % cp env-example .env
cp: env-example: No such file or directory
で見つからない。
https://readouble.com/laravel/5.7/ja/configuration.html
を見ると、.env.exampleがある、と記載がある。名称が変わったか？
で、コピーをすると、ファイルが出来た。

laradock % cp .env.example .env
laradock % ls -al .env*
-rw-r--r--  1 hnakase  staff  32781  6 27 01:47 .env
-rw-r--r--  1 hnakase  staff  32781  6 27 01:32 .env.example

.envファイルの編集は、
'# .env
'# Choose storage path on your machine. For all storage systems 

- DATA_PATH_HOST=~/.laradock/data
+ DATA_PATH_HOST=.laradock/data

と、

'# .env
'### MYSQL '#################################################
MYSQL_VERSION=5.7.22 # versionを固定
MYSQL_DATABASE=homestead #データベース名を変更
MYSQL_USER=homestead　#ユーザー名を変更
MYSQL_PASSWORD=hogehoge #パスワードを変更
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
の2箇所。
mysqlのデータを記録するディレクトリの変更と、
mysqlへのログイン情報の変更。

で、次は、docker-composeでコンテナを立ち上げる。
過去にビルドされていない時は、warningを出しながら、
ちゃんとbuildしてくれる。
docker-compose up -d nginx mysql phpmyadmin

初めてのコマンドだと、数分かかります。

で、
WARNING: Image for service nginx was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating laradock_docker-in-docker_1 ... done
Creating laradock_mysql_1            ... done
Creating laradock_workspace_1        ... done
Creating laradock_phpmyadmin_1       ... done
Creating laradock_php-fpm_1          ... done
Creating laradock_nginx_1            ... done
laradock %

となったら完了。docker dashboardで起動を確認すると良い。

https://localhost/
で、
404 not found
nginx
と表示されたらOK。

https://localhost:8080
で,
phpmyadminツールが立ち上がる、と書いてあるが、
「このページは動作していません」
だと！？
Docker Dashboardで確認すると、
![スクリーンショット 2021-06-27 2.17.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1478088/3790755d-8e2a-8c56-53a5-1eb07cf4ea8c.png)
あれ〜、laradock_phpmyadmin_1のポート番号が8081になってる！

で、
http://localhost:8081
でアクセス成功。

次、laravel_workspace_1の起動を確認して、
laradock % docker-compose exec --user=laradock workspace bash
laradock@ed2c876cc7b9:/var/www$ 
で、workspaceのコンテナに入る。
workspaceコンテナ内でcomposerを使いLaravelのプロジェクトを作成。

laradock@ed2c876cc7b9:/var/www$ composer create-project laravel/laravel src
Creating a "laravel/laravel" project at "./src"
Installing laravel/laravel (v8.5.20)
  - Downloading laravel/laravel (v8.5.20)
  - Installing laravel/laravel (v8.5.20): Extracting archive
Created project in /var/www/src
> @php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
https://repo.packagist.org could not be fully loaded (curl error 7 while downloading https://repo.packagist.org/p2/symfony/string.json: Failed to connect to repo.packagist.org port 443: Connection refused), package information was loaded from the local cache and may be out of date

                                                                                                                                    
  [Composer\Downloader\TransportException]                                                                                          
  curl error 7 while downloading https://repo.packagist.org/p2/symfony/string.json: Failed to connect to repo.packagist.org port 4  
  43: Connection refused                                                                                                            
                                                                                                                                    

create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--prefer-install PREFER-INSTALL] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--add-repository] [--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--no-secure-http] [--keep-vcs] [--remove-vcs] [--no-install] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--ask] [--] [<package>] [<directory>] [<version>]

laradock@ed2c876cc7b9:/var/www$ 

何だこのエラーは？
と調べてみると、IPｖ６での接続がNGらしい。
https://blog.kubou.net/2019/04/09/231536/
に記載があった。
そこで、MACのネットワーク設定を開き、TCP/IPのタブで、
IPｖ６の設定：リンクローカルのみ
を選択して適用。
laradock@ed2c876cc7b9:/var/www$ rm -rf src
で、ｓｒｃを削除して（削除しないとsrcが空じゃない、とエラーがでる）

laradock@ed2c876cc7b9:/var/www$ composer create-project laravel/laravel src
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: fruitcake/laravel-cors
Discovered Package: laravel/sail
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
74 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> @php artisan key:generate --ansi
Application key set successfully.
laradock@ed2c876cc7b9:/var/www$ 
完了。

laradock@ed2c876cc7b9:/var/www$ cd src
で、srcディレクトリに入って、
laradock@ed2c876cc7b9:/var/www/src$ vi .env
で.envファイルを編集。
'#.env
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=hogehoge
で、データベースに関する情報を更新して、保存。

引き続き、
laradock@ed2c876cc7b9:/var/www/src$ php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table (47.84ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (39.11ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated:  2019_08_19_000000_create_failed_jobs_table (39.60ms)
laradock@ed2c876cc7b9:/var/www/src$ php artisan key:generate
Application key set successfully.
laradock@ed2c876cc7b9:/var/www/src$
で完了。
exitでコンテナを抜けて、laravelの.envを編集。
'############################'
'# General Setup'
'############################'

'### Application Path'
'# Point to your application code, will be available at `/var/www`.'

APP_CODE_PATH_HOST=../src/

で、保存したら、
nginxを再起動。
laradock % docker-compose up -d nginx
Docker Compose is now in the Docker CLI, try `docker compose up`

Recreating laradock_docker-in-docker_1 ... done
Recreating laradock_workspace_1        ... done
Recreating laradock_php-fpm_1          ... done
Recreating laradock_nginx_1            ... done
hnakase@HironoMacBook-Pro laradock %

これで、
https://localhost/
にアクセスすると、Laravelのindexページが表示されて完了。