広告

【Laravel】SailでMariaDBを使う

Laravel

当サイトではアフィリエイト広告を利用しています。

広告

はじめに

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

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

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

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

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

広告

【紹介】個人開発

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

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

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

開発環境の準備

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

Windows
Laravel Sailで開発環境構築【Vite対応】
今回は、Laravel Sailを使って環境の構築を行いました。 SailはDockerですので、開発環境を簡単に用意することもできますし、カスタマイズすることも楽です。
Mac
【M1 Mac】Laravel Sailで開発環境構築【Vite対応】
Laravel Sailを使って環境の構築を行いました。 SailはDockerですので、開発環境を簡単に用意することもできますし、カスタマイズすることも楽です。

VS Codeの用意

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

【VS Code】インストール手順を解説 【Windows/M1 Mac対応】
今回はVS Codeのインストール手順を解説します。WindowsとMacのそれぞれ分けてまとめました。

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

【VS Code】オススメの設定・拡張機能・便利機能・ショートカット【Win/Mac対応】
私的に最初に行う設定や、拡張機能、よく使うショートカットや便利な機能をまとめてみました。
広告

新規プロジェクト作成

Laravel Sailを新規でプロジェクトを作成する場合、以下のコマンドを実行します。
デフォルトでは、mysql、redis、meilisearch、mailpit、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、mailpitなどが選択できます。

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

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

https://laravel.com/docs/10.x#choosing-your-sail-services

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] mailpit
  [8] selenium
  [9] soketi

もし複数指定する場合は、カンマ区切りで入力します。
ちなみに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でも使用することができます。

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

【Laravel Sail】phpMyAdminをインストール
Laravel Sailには、phpMyAdminがインストールされていませんので、今回は使えるようにしてみました。

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を活用しましょう。

GitHub Copilot

GitHub Copilotを導入し、AIにコーディングをサポートしてもらうこともできます。

さいごに

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

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

LaravelMacOSPHPWindowsプログラミング
広告

個人開発

千草 @chigusaweb

現役のITエンジニア。 気ままにコードを書いたり技術情報を発信しています。 Webアプリ/Windows・Macアプリ/モバイルアプリなど。 (Java, PHP, Javascript, Swift, Python, C#, 他) 個人開発:Clibor, Quipha, TXT-Crypter, 符計算特訓, チグサツール Kindle本: Laravel9 実践入門, 他

クリップボード履歴

Clibor

Windows

Cliborはシンプルで高機能なクリップボード履歴ソフトです。
また普段よく使うワードを定型文として登録し、いつでもクリップボードに保存することができます。高度なテキスト整形・FIFOモード・ホットキーに対応。

クリップボード履歴

Windows版Cliborの利便性を、そのままMacでも。
定型文登録、高度なテキスト整形、FIFOモードなど、便利なクリップボード履歴機能を利用できます。macOS最新のTahoeにも対応。

テキスト暗号化

テキストを暗号化してURLで共有・保存できる無料サービスです。
パスフレーズを知る人だけが復号できます。登録不要、データはサーバーに保存されません。
Notionでも利用できます。

学習

Quipha

Web / iOS

自分だけの問題集や問題を作成し、クイズを行い、学習に活用することができるアプリです。
例えば、学校の授業、語学学習、IT資格やその他の資格など多彩な分野での学習を支援します。
いつでも、どこでも、あなたの学習をサポート。

ツール

日常の「ちょっとした効率化」をサポートするWeb便利ツール集。
テキスト・データ処理から最新のAI連携まで、日々のちょっとした手間でググりがちなユーティリティを1つの場所に集約。

麻雀

麻雀の符計算をひたすら特訓しマスターしましょう。
初心者の方はもちろん、もっと速く計算したい方にも役立ちます。
5万対局以上の実践から問題を収録。

コメント

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