自分だけのクイズ作成 - Quipha公開中

【Laravel】SailでMariaDBを使う

Laravel
スポンサーリンク

はじめに

今回は、Laravel SailでMariaDBを使う方法をまとめました。
標準ではMySQLが採用されていますが、変更することができます。

例えば、最新のエックスサーバーでもMariaDBが採用されています。
デプロイする環境に合わせて、DBを選択しましょう。

使用するバージョンなど
  • Windows 11 or macOS Monterey (M1)
  • Laravel 8 or 9
  • MariaDB
  • phpMyAdmin

2022/10/16 WindowsとMacを使い、最新バージョンで確認しました。

他にも私のブログで、Laravelについて解説している記事がありますのでご覧ください。

【紹介】個人開発

私の個人開発ですがQuiphaというサービスを開発しました。(Laravel, Vue3など)
良かったら、会員登録して動作を試してみて下さい。

また、Laravel 9 実践入門という書籍を出版しました。
Kindle Unlimitedを契約している方であれば、読み放題で無料でご覧いただくことができます

是非多くの方に読んでいただき、Laravelの開発に少しでもお役に立てたら幸いです。

開発環境の準備

今回は、Laravel Sailを使って環境の構築を行いました。
以下の記事を参考にしてください。

Windows
Mac

VS Codeの用意

VS Codeのインストール方法は、以下の記事にまとめましたのでご覧ください。

設定方法は以下を参考にしてください。

新規プロジェクト作成

Laravel Sailを新規でプロジェクトを作成する場合、以下のコマンドを実行します。
デフォルトでは、mysql、redis、meilisearch、mailhog、seleniumが設定されます。

curl -s https://laravel.build/example-app | bash

プロジェクト作成時に、サービスを選択することができます。
今回は、MariaDBを指定してプロジェクトを作成します。

curl -s "https://laravel.build/example-app?with=mariadb" | bash

利用可能なサービスが色々あり、mysql、pgsql、mariadb、redis、memcached、meilisearch、minio、selenium、mailhogなどが選択できます。

複数指定する場合は、カンマ区切りで指定します。

詳しくは公式サイトをご覧ください。

Laravel - The PHP Framework For Web Artisans
Laravel is a PHP web application framework with expressive, elegant syntax. We’ve already laid the foundation — freeing you to create without sweating the small...

docker-compose.ymlを確認しましょう。
MariaDBが追加されています。

...
    mariadb:
        image: 'mariadb:10'
        ports:
            - '${FORWARD_DB_PORT:-3306}:3306'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ROOT_HOST: "%"
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
        volumes:
            - 'sail-mariadb:/var/lib/mysql'
            - './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
        networks:
            - sail
        healthcheck:
            test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
            retries: 3
            timeout: 5s
...
volumes:
    sail-mariadb:
        driver: local

サービスを指定してプロジェクトを作成した場合は、既に使えるようになっています。
.envファイルを確認しましょう。
DB_HOSTにmariadbが指定されています。

DB_CONNECTION=mysql
DB_HOST=mariadb
DB_PORT=3306
DB_DATABASE=example_app
DB_USERNAME=sail
DB_PASSWORD=password

以下のコマンドでテーブルを作成し、使用することができます。

sail artisan migrate
スポンサーリンク

既存プロジェクトに追加

既にSailでプロジェクトを作成しており、MySQLを指定している場合でも変更できます。

sail php artisan sail:install

コンテナ環境に何を構築するか聞かれます。
今回はmariadbだけインストールしたいので、2を入力しEnterで進めました。

Which services would you like to install? [mysql]:
  [0] mysql
  [1] pgsql
  [2] mariadb
  [3] redis
  [4] memcached
  [5] meilisearch
  [6] minio
  [7] mailhog
  [8] selenium

もし複数指定する場合は、カンマ区切りで入力します。
ちなみにSailでプロジェクトを作成した場合は、デフォルトで以下の番号のサービスが追加されています。

0,3,5,7,8

もちろん後からサービスの追加はできます。

以下のメッセージが表示され、環境の構築はすぐに終わります。
docker-compose.ymlが先ほどと同様になります。

Sail scaffolding installed successfully.

設定ファイルは書き変わりませんので、.evnを確認します。
デフォルトでは以下のようになっています。

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=example_app
DB_USERNAME=sail
DB_PASSWORD=password

ホストの指定をMariaDBに変更します。

DB_CONNECTION=mysql
DB_HOST=mariadb
DB_PORT=3306
DB_DATABASE=example_app
DB_USERNAME=sail
DB_PASSWORD=password

Sailを再起動しましょう。
サービスの変更を行うと、Sailの停止時にエラーになる場合があります。
その場合は、一度Dockerからコンテナを停止しました。

sail down
sail up -d

これでDBを使用することができます。

phpMyAdminの導入

phpMyAdminから見れるようにしましょう。
MariaDBでも使用することができます。

詳しくは以下の記事を参考にしてください。

docker-compose.ymlを修正します。
phpMyAdminに関する情報を、servicesブロック内に追記します。

    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        links:
            - mariadb:mariadb
        ports:
            - 8080:80
        environment:
            #PMA_USER: "${DB_USERNAME}"
            #PMA_PASSWORD: "${DB_PASSWORD}"
            PMA_HOST: mariadb
        networks:
            - sail

mariadbを指定します。

phpMyAdmin上から、MariaDBが指定されているのが確認できました。

その他

初学者へ

Laravelを初めて触る方へ向け、手順やアドバイスをまとめました。

外部サーバーへ公開

作成したアプリは公開して使ってもらいましょう!
Laravelアプリケーションを外部公開する方法をまとめました。

脆弱性対策

脆弱性を抱えたアプリケーションの場合、攻撃を受ける可能性があり大変危険です。
作成したアプリケーションは、脆弱性対策も意識しましょう。

GitHubと連携

GitHubと連携する方法を解説しました。
プロジェクトの管理はGitHubを活用しましょう。

さいごに

今回は、Laravel SailでMariaDBを使う方法をまとめました。

他にも私のブログで、Laravelについて解説している記事がありますのでご覧ください。

\オススメ/

コメント

タイトルとURLをコピーしました