Dockerで動かすLaravelについて学習する。
参考書は以下を選択する。
開発環境について以下に列挙する。
項目 | バージョンまたはイメージ名 |
---|---|
ホストOS | Ubuntu22.04 |
docker | 24.0.4 |
docker compose | v2.19.1 |
php | 8.1.21(php:8.1.21-zts-bullseye) |
composer | composer:lts |
Laravel | 9.* |
以下の要領でコマンドを実行し、開発及び実行環境を構築する。ディレクトリは./prj
とする。
#事前にdocker pull composer:ltsを実行してイメージを入手する。
#Laravel 9.*をインストールする。
docker run -u=$(id -u):$(id -g) --rm --interactive --tty --volume $PWD:/app composer:lts create-project "laravel/laravel=9.*" ./prj
#コンテナの環境変数をセットする。
./gen_envfile.sh
#コンテナを立ち上げる。
docker compose up -d --build
サーバーを起動するためには、まずIPアドレスを調べる。コンテナに入ってhostname -i
で確認する、またはdocker-compose.yml
からIPアドレスを確認する。(IPアドレスを$IP_ADDRESS
として以下に記述する。)
コンテナのIPアドレス($IP_ADDRESS
)をもとにサーバを立ち上げる。以下のコマンドを実行し、http://$IP_ADDRESS:8000/
にアクセスする。うまく行けばLaravel
と書かれたページが表示される。
php artisan serve --host=$IP_ADDRESS
以下のコマンドでも起動する。
php artisan serve --host=$(hostname -i)
記録に残っている参考にした本とサイトを記す。
- PHPフレームワーク Laravel入門 第2版 - 秀和システム あなたの学びをサポート!
- [改訂第3版]Linuxコマンドポケットリファレンス:書籍案内|技術評論社
- Composer
- Composer|dockerhub
- ComposerをDockerコンテナで動かす - Qiita
- Composerの導入&使い方(初心者の復習用) - Qiita
- docker run するときにUID,GIDを指定する - Qiita
- docker run|Docker Documentation
- シェルで現在のユーザーID・グループIDを取得する方法|LFI
- Packagist
- Laravelでインストール時にバージョン指定する方法
- artisan serve で任意のhost,portを指定する方法 - Qiita
- シェルスクリプトのデバッグ|UNIX & Linux コマンド・シェルスクリプト リファレンス
- bashのヒアドキュメントを活用する - Qiita
- Dockerコンテナの内部IPアドレスを確認する方法 - Qiita
第5章はLaravelの機能であるDB
クラスからデータベースを動かす。内容的にはほとんどSQL文に近いこと、ほとんどのケースでORMを使ってコードを書くと思われるので第5章を飛ばして第6章に取り組む。とはいえ、5章での内容が作業に必要になるので、4章から6章に移動するために必要な操作を以下に記録する。
#step1
php artisan make:model Person -m #モデルとマイグレーションファイルを作成
#step2
#マイグレーションファイルを編集(下記参考)
#step3
touch database/database.sqlite #ファイルを作成
#step4
#設定ファイルの編集
# config/database.php のデフォルト設定をsqliteにする。
# .envファイルのDB_CONNECTIONをsqliteにする。
# .envファイルのDB_DATABASEをdatabase/database.sqliteにする。←database.php の設定と同じことを書いているがなぜだろう?ー>(※)
#step5
php artisan migrate #マイグレーションを実行
#step6
php artisan make:seeder PeopleTableSeeder #シーダーを用意する。
#step7
#DatabaseSeeder.phpに作成したシーダーを登録。
#step8
php artisan db:seed #シーダーを実行する。
#step9
#helloapp.blade.phpにstyleを追加する。(表の見え方を追加)
マイグレーションファイルの記述は本とv9.xでは異なる。以下のドキュメントを参考に記述していく。
(※)追記。
公式ドキュメントを読んでいると設定についての記述があった。
はじめは以下の設定を記述していた。
DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=/home/user01/prj/database/database.sqlite
DB_USERNAME=root
DB_PASSWORD=
しかし、以下のページを確認すると上記は不要ですべて削除しても良いということだった。
実際に削除した状態で実行したが問題なく動作した。