Laravel : プロジェクトの作成
Laravel プロジェクトの作成方法についてまとめる.
環境
参考
- プロフェッショナルWebプログラミング Laravel
前提
Docker コンテナ上に Laravel プロジェクトを作成する形で進める.
Docker コンテナ上に作成した Laravel プロジェクトは Sail という Laravel に同梱されたコマンドを使用して操作, 連携する.
Sail を使用することで, コンテナ上への各種環境(PHP, Composer, MySQL)を自動で構築してくれて楽.
環境構築
Docker コンテナ上に Laravel プロジェクトを作成するため, ローカル環境には Docker のインストールだけでよい.
Laravel プロジェクト作成
以下のコマンドで Laravel プロジェクトを作成する. プロジェクト名は sample-project
.
$ curl -s "https://laravel.build/sample-project?php=81" | bash
コンテナを起動する
Sail を実行しコンテナ上のサーバーを起動する.
- 作成したプロジェクトに移動する
$ ./vendor/bin/sail up
を実行する- ブラウザから
http://localhost
にアクセスする - Web サーバに繋がることを確認する
初回 Sail 実行時は Docker イメージのインストールなどで時間がかかる.
以降は $ ./vendor/bin/sail up
をすることでコンテナ上のサーバが起動しブラウザからアクセスできる.
Sail のエイリアスを設定する
いちいち $ ./vendor/bin/sail up
を入力するのは手間なのでエイリアスを設定する.
.bashrc などの rc ファイルに以下を追記する.
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail' # テストコマンドで sail ファイルがカレントにあるかチェックし, あれば `bash sail` を実行. # なければ `vendor/bin/sail を実行する.
.bashrc 更新後は $ source .bashrc
で更新内容を反映する.
以降は sail up
で実行可能.
Sail のデーモン起動と終了
- Sail のデーモン起動
$ sail up -d
- Sail の終了
$ sail down
コンテナに入る
- コンテナに入る
$ sail shell
- コンテナから出る
$ exit
コンテナ環境のカスタマイズ
コンテナ設定のための Dockerfile の更新方法について.
カスタマイズ用の Dockerfile の作成
以下のコマンドを実行する
$ sail artisan sail:publish
アプリケーションルート(プロジェクトのトップディレクトリ)に docker/
ディレクトリが作成される.
docker/
ディレクトリ内には各バージョンごとのフォルダ(8.0, 8.1 など)が作られる.
適用されるバージョンは docker-compose.yml
の services.laravel.test.build.context
に設定されているバージョンのディレクトリ内 Dockerfile が使用される.
この Dockerfile を変更することでコンテナ環境をカスタマイズできる.
更新した Dockerfile の反映
Dockerfile 更新後は以下のコマンドで Docker イメージを再ビルドする.
$ sail build --no-cache
タイムゾーンを変更する
デフォルトではコンテナのタイムゾーンが UTC となっているため日本時間に変更する.
docker/x.x/Dockerfile
を以下の通り変更する.
- 変更前
ENV TZ=UTC
- 変更後
ENV TZ='Asia/Tokyo'
更新後は Docker イメージをビルドする.
一旦 sail down
, sail up -d
して立ち上げ直してから
sail shell
でコンテナ内に入り date
コマンドで日本時間(JST)になっていることを確認する.
MySQL の文字コード変更
日本語での開発に合わせて文字コードの設定を変更する.
x.x
は使用しているバージョンに合わせて適宜読み替える.
docker/x.x
ディレクトリにmy.cnf
ファイルを以下の通り作成する
[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_bin [client] default-character-set = utf8mb4
- 作成した
my.cnf
ファイルを MySQL コンテナの/etc/
に配置し設定が反映されるようdocker-compose.yml
に以下を追記する
mysql: volumes: - './docker/x.x/my.cnf:/etc/my.cnf'
$ sail down
でコンテナを停止する$ sail up -d
でコンテナを起動する- MySQL にアクセスして文字コードが変更されたことを確認する
$ sail mysql
を実行するshow variables like '%char%';
を実行する- 各パラメータが utf8 系統になっていることを確認する
exit
で MySQL から出る
git clone 後にやること
作成した Laravel プロジェクトを GitHub などで管理し, git clone
で
ローカル環境に持ってきた後に実施する手順について.
Sail を使えるようにするため以下を実施する.
docker run --rm ¥ -u "$(id -u):$(id -g)" ¥ -v $(pwd):/var/www/html ¥ -w /var/www/html ¥ laravelsail/php81-composer:latest ¥ composer install --ignore-platform-reqs