laravel 学習用
アプリケーション起動方法の例
docker-compose up
終了時 control + c
起動中のコンテナの中に入る (コンテナ起動中にもう一つコンソール画面立ち上げ)
docker exec -it ctr-study-laravel bash
データベースの状況を確認(phpmyadmin)
routes/web.php
resources/views/
tests/Feature/
コントローラのテストなどtests/Unit/
モデルロジックファイルの単体テストなどphpunit.xml
テスト実行時の設定ファイルdocker-compose exec web php artisan make:test ***Test
テストコードファイル作成docker-compose exec web php artisan test tests/Feature/***Test.php
特定のテストコードファイル実行phpunit.xml
テストコード実行時の設定<env name="DB_CONNECTION" value="sqlite"/>
sqliteでデータ準備<env name="DB_DATABASE" value=":memory:"/>
テスト実行後は消滅<env name="LOG_CHANNEL" value="stderr"/>
ログの出力先をコンソール画面へ\Log::info('log--->', ['data--->',$data]);
ログ出力の例database/migrations/
データベース関連の定義app/Http/Controllers/
http リクエストのコントローラーdocker-compose exec web php artisan make:controller ***Controller
コントローラーファイル作成localhost:8025
mailpit, laravel 9 以降で利用可能docker-compose exec web php artisan event:generate
リスナーファイル作成初動時の設定について
git clone 後に docker を使い docker volume 作成後コンテナを起動させてください。
git clone git@github.com:Becom-Developer/study-laravel.git
cd study-laravel
docker volume create mysql_study
docker-compose up --build
もうひとつコンソール立ち上げ、コンテナの中でモジュールインストールと .env
ファイル作成
docker-compose exec web composer update
docker-compose exec web cp .env.example .env
docker-compose exec web php artisan key:generate
.env
ファイルのdb設定は下記のようにしておく
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=forge
DB_USERNAME=forge
DB_PASSWORD=
マイグレーション実行
docker-compose exec web php artisan migrate
web ブラウザで下記のURLをアクセスして正常に表示されていることを確認
docker-compose を終了させるときは control + c
初動時以外の通常の起動は
docker-compose up
初動時の環境構築に関するメモ
類似のシステムを構築する場合の資料として活用してください。
docker 起動用のファイルを用意、 内容は下記 Files
参照
touch Dockerfile docker-compose.yml
docker でイメージからコンテナ立ち上げまで
docker volume create mysql_study
docker-compose up --build
もうひとつコンソール立ち上げ、docker コンテナの中で laravel の最新をインストール
docker-compose exec web composer create-project laravel/laravel study-laravel
ディレクトリ構造を整える
mv -n study-laravel/* .
mv -n study-laravel/.[^\.]* .
README.md だけが残るがこれは今回は不要としておく、その後ディレクトリごと削除
rm -r study-laravel
初動のインストールなので .env
ファイルは存在している db設定は下記のようにしておく
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=forge
DB_USERNAME=forge
DB_PASSWORD=
表示のテスト: http://localhost:8100/
phpmyadmin
設定
マイグレーション実行、テーブル作成
docker-compose exec web php artisan migrate
Dockerfile
FROM php:8.1.13-apache-bullseye
COPY --from=composer/composer:2-bin /composer /usr/bin/composer
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# apache 設定
ENV APACHE_DOCUMENT_ROOT /usr/src/app/public
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
RUN a2enmod rewrite
# laravel インストール用
RUN apt update
RUN apt install -y git unzip
# gd ライブラリインストール用
RUN apt install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev
RUN docker-php-ext-configure gd --with-freetype --with-jpeg
RUN docker-php-ext-install -j$(nproc) gd
# 不足の php ライブラリ
RUN docker-php-ext-install sockets
RUN docker-php-ext-install exif
RUN docker-php-ext-install pdo_mysql
# ユーザーを作成後切り替え
RUN useradd -s /bin/bash -m -u 1000 appuser
USER 1000
docker-compose.yml
version: '3.9'
services:
web:
container_name: ctr-study-laravel
build:
context: .
image: img-study-laravel
ports:
- '8100:80'
volumes:
- .:/usr/src/app
db:
container_name: ctr-study-laravel-db
image: mysql:8.0.31
restart: always
environment:
MYSQL_ROOT_PASSWORD: study
MYSQL_DATABASE: forge
MYSQL_USER: forge
volumes:
- mysql_study:/var/lib/mysql
phpmyadmin:
container_name: ctr-study-laravel-phpmyadmin
image: phpmyadmin:5.2.0-apache
restart: always
ports:
- 8200:80
environment:
PMA_HOST: 'db'
PMA_USER: 'root'
PMA_PASSWORD: 'study'
volumes:
mysql_study:
external: true