MariaDBは、構造化問い合わせ言語(SQL)を使用したデータアクセスに対応した無料で使えるオープンソースデータベースです。パスワード、役割に紐付いたアクセスの管理など、データ保護機能が組み込まれています。

MariaDBでのデータアクセス許可には、サーバーとの接続が必要になります。選択肢はクラウドプロバイダー、マネージドホスティングサービス、共用レンタルサーバーなどです。

この記事では、Dockerコンテナを使用してMariaDBを実行し、WordPressサイトに接続する方法をご紹介します。

Dockerとは

Dockerは、コンテナ環境でのアプリケーション実行を支援する無料の開発ツールです。コンテナ内には、アプリケーションのコード、依存関係、およびアプリケーションを実行する上で重要なシステムツールが揃います。ソフトウェア開発ライフサイクルを通した、堅牢なアプリケーション構築が可能です。

通常、コンテナは、オペレーティングシステムをホストとして使用します。つまり、ホストマシンのカーネルが、CPU、メモリ、ファイルシステムなどのリソースへのアクセスを司ります。その結果として、仮想マシンのような従来の仮想化は必要ありません。Dockerを使用してのMariaDBインスタンス実行には、いくつかの強みがあります。

  • デジタルフットプリントが小さく、システムリソースを効率的に使用できる
  • 一貫性があり、最小限の変更で本番環境とテスト環境にてアプリケーションを実行できる
  • 柔軟なメカニズムを用いてリソース共有ができる
  • スケーラブルであり1つのホストで多くのコンテナを実行できる

DockerでMariaDBを使う

このセクションでは、Dockerを使用してMariaDBを実行できるように、コンテナ技術を用いた環境を作成します。この手順を通して、Dockerならではのコンテナ技術について理解を深めることができるはずです。Dockerは、Windows、macOS、およびLinuxディストリビューションのほとんどのバージョンで動作します。この説明では、Windows 10/11、Ubuntu 20.04、またはmacOS Xが必要になります。

1. Dockerのインストール

Dockerの最も優れた特徴の1つが、その移植性です。ホストのオペレーティングシステムを使用するため、テストや本番環境として力を発揮します。それでは、3つのオペレーティングシステムにDockerをインストールするそれぞれの方法から説明します。

Ubuntu 20.04

まず、Ubuntuのパッケージリストを更新します。

sudo apt-get update

次に、HTTPS接続でのオンラインリポジトリへのアクセスを許可します。

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

DockerのGPGキーを追加する
DockerのGPGキーを追加する

sudo mkdir -p /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

次に、Dockerのリポジトリを追加します。

echo deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

そして、Ubuntuのパッケージをアップデートして、Dockerのリポジトリを追加します。

sudo apt-get update

最後に、Docker Engineをインストールします。

sudo apt-get install docker-ce

DebianやFedoraなど他のLinuxディストリビューションを使用している場合は、「Installing Docker in Linux」の公式ドキュメントに従ってください。

Windows 10/11

Dockerは、バックエンドとしてWindows Subsystem for Linux version 2 (WSL 2)を使用して、Windows 10または11で利用可能です。以下の手順でDockerをインストールしてください。

まず、WindowsシステムでVirtual Machine Platform 機能を有効にします。これにより、WSL 2をインストールし、Windows上に仮想化Linuxインスタンスを用意して実行することができます。

次に、WSLをインストールします。

そして、Microsoft Storeに移動し、Ubuntu 20.04をダウンロードします。

最後に、Docker Desktopfor WIndowsをダウンロードします。ダウンロードしたファイルを開き、インストール作業を開始します。

インストールが完了したら、タスクバーから「Docker Desktop」を検索し、開いてください。

注)Dockerコマンドを使用するには、ターミナルにPowerShellを使用する必要があります。

macOS X

Dockerは、Apple App Store経由でmacOSでも利用可能です。IntelAppleの両方のチップを対象とした2つのインストーラが用意されています。

まず、上記のリンクのいずれかから条件に合ったインストーラをダウンロードします。次に、ダウンロードした.dmgファイルをダブルクリックで開きます。

次に、Dockerのアイコンをアプリケーションフォルダにドラッグ&ドロップします。

次に、アプリケーションフォルダからDockerアプリを開き、プロンプトに従って設定を完了させます。

インストール作業が完了したら、デスクトップのステータスバーにあるDockerのアイコンをダブルクリックして開きます。

Dockerのコマンドを実行するには、デフォルトのターミナルを使用します。

2. MariaDBイメージのダウンロード

Dockerイメージは、言うなればDockerコンテナを作成するためのコマンドと設定のパッケージ。アプリケーションを実行するために必要なものをすべてインストールする役割を担っています。Docker HubからMariaDB公式イメージを見つけることができます。

Docker HubからMariaDBのイメージをダウンロードするには、docker pull コマンドを使用します。

docker pull mariadb

また、以下を実行することで、ダウンロードしたDockerイメージの一覧を表示することができます。

docker images

これはコマンドの出力です。

Dockerイメージをリストアップ
Dockerイメージをリストアップ

3. コンテナの作成

コンテナとは、プロセスやプログラムを実行するために必要なコード、依存関係、システムツールなどをすべて備えたソフトウェアのひとつの単位です。先にダウンロードしたイメージを使用して、MariaDBコンテナを作成します。

docker create mariadb --name mariadb-wp -i –t

これにより、mariadb-wp というMariaDBコンテナが作成されます。–i は対話型セッションを可能にし、–t は擬似端末を作成するものです。公式ドキュメントには、利用可能なすべての変数に関する情報が記載されています。

4. コンテナの実行、一時停止、停止

Dockerにより、開発者による柔軟な環境の設定が可能になります。このセクションでは、環境変数を使用してMariaDBのコンテナを構成し、コンテナに対して特定のシステムプロパティを設定していきましょう。

MariaDBには、データベース名、パスワード、データベースユーザーなど、設定可能な変数が多数あります。サポートされている環境変数の一覧については、DockerのMariaDBに関するドキュメントをご確認ください。

docker run -d --name mariadb-wp -p 3306:3306 -v '/path/on/host/:/var/lib/mysql' -e "MARIADB_ROOT_PASSWORD=" -e "MARIADB_DATABASE=wordpress" -e "MARIADB_USER=wordpress" -e "MARIADB_PASSWORD=" mariadb

上記のコマンドは、MariaDBのルートパスワード、データベースユーザー、および関連するパスワードを設定するものです。そして、ポート3306でMariaDBを実行します。コンテナのアプリケーションの実行を一時停止するには、次のコマンドを使用します。

docker pause mariadb-wp

最後に、以下のコマンドでコンテナ内で実行中のアプリケーションを停止することもできる。

docker stop mariadb-wp

5. コンテナ化したMariaDBのWordPressサイトへの接続

さて、続いてはMariaDBをWordPressサイトに接続します。ローカル環境でWordPressサイトを作成する方法はこちらで詳しく説明しています。

WordPressウェブサイトのルートディレクトリにアクセスし、お好みのコードエディターでwp-config.phpファイルを開きます。データベースの変数を定義している部位を探し出し、以下のように編集します。MariaDBコンテナを作成する際には、データベース名、パスワード、ポート番号が使用されていることを確認してください。

define('DB_NAME', 'wordpress');

define('DB_USER', 'wordpress’);

define('DB_PASSWORD', '');

define('DB_HOST', 'http://localhost:3306’);

次に、WordPressサイトのデータベースダンプを、コンテナ化したMariaDBにインポートする必要があります。まず、ウェブサイトの現在のデータベースをエクスポートしていることを確認します。詳しくは、MySQLデータベースのバックアップについての解説をご覧ください。

データベースのエクスポート後、コンテナ内にデータベースダンプをインストールします。

docker exec -i mariadb-wp sh -c 'exec mysql -u root -p "$MARIADB_ROOT_PASSWORD" < /some/path/on/your/host/all-databases.sql'

docker execコマンドを使用すると、コンテナ内でシェルコマンドを実行することができます。上記のコマンドでエクスポートしたファイルを使用し、MariaDBにデータベースをインポートしました。

WordPressサイトに投稿を追加

テストとして、WordPressの管理者アカウントを使用してサンプルの投稿を作成します。

まず、WordPressにログインし「投稿」>「新規追加」をクリックします。以下のように情報を入力し、「公開」をクリックします。投稿を作成したら「投稿を表示」をクリックして、作成したばかりの投稿を表示します。

WordPressのエディターで新規投稿を追加する
WordPressのエディターで新規投稿を追加する

これだけでOKです。

DevKinstaでMariaDB+Dockerの組み合わせを使う

Kinstaの無料アプリケーションであるDevKinstaは、開発者によるコンテナ化の施されたWordPressサイトの効率的作成を支援します。PHPのバージョン、データベースサーバー、ウェブサーバーの設定にDockerを採用しており、macOS、Windows、Ubuntu/Linuxを使用しての開発をサポートしています。

まず、PCにDevKinstaをダウンロード、インストールし、起動します。新しい「新規WordPressサイト」、「Kinstaからインポート」、「上級設定」という3つの選択肢から選ぶことができます。

DevKinstaの新規サイト作成画面
DevKinstaの新規サイト作成画面

必要事項を入力し「サイト作成」をクリックするだけでサイトが作成できます。

DevKinstaのWordPressサイト新規作成画面
DevKinstaのWordPressサイト新規作成画面

これでDevKinstaを使ってコンテナ型のWordPressサイトを作成することができました。

まとめ

Dockerは、MariaDBのようなデータベースサーバーを実行するソフトウェアをコンテナ化するのに便利な開発者向けのツールです。最小限におさえられた環境で、機能を犠牲にすることなく、システムリソースの効率性を維持することができます。

今回の記事では、Dockerのインストール、MariaDBのセットアップ、そしてWordPressサイトとコンテナ化したMariaDBデータベースを接続する方法を学びました。さらに、DevKinstaを使用して、完全にコンテナにより区切られたWordPressサイトを作成する方法にも触れました。

WordPressサイトと相性抜群のサーバーについても理解を深めることをおすすめします。ホスティングサービス選びからサイト管理がいかに簡単になるかについては、KinstaのWordPress専用マネージドホスティングをご確認ください。

Salman Ravoof

Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.