Docker Composeで構築!MariaDB開発データベース環境の構築・運用
Dockerを使って開発データベース用のDockerイメージを構築する方法
Dockerは、開発、テスト、本番環境においてアプリケーションを迅速かつ簡単に実行するためのコンテナ化プラットフォームです。Dockerfileと呼ばれる指示書を用いて、必要なソフトウェアや設定を記述することで、再現性の高い環境を構築できます。
本記事では、DockerとDockerfileを用いて、MariaDBのような開発データベース用のDockerイメージを構築する方法を詳しく解説します。
ステップ1:Dockerfileの作成
Dockerイメージを構築するには、まずDockerfileを作成する必要があります。Dockerfileは、テキストエディタで記述できるシンプルなファイルで、イメージ作成に必要な一連の命令を定義します。
以下は、MariaDB 10.5用の基本的なDockerfileの例です。
FROM mariadb:10.5
ENV MARIADB_ROOT_PASSWORD="password"
RUN apt-get update && apt-get install -y --no-install-recommends \
mariadb-server \
mariadb-client
RUN mkdir -p /var/lib/mysql
RUN chown mysql:mysql /var/lib/mysql
CMD ["mysqld"]
このDockerfileは、以下の処理を実行します。
- MariaDB 10.5ベースイメージを指定します。
MARIADB_ROOT_PASSWORD
環境変数に、rootパスワードを設定します。- MariaDBサーバーとクライアントをインストールします。
/var/lib/mysql
ディレクトリを作成し、所有権をmysql
ユーザーに設定します。mysqld
コマンドを実行して、MariaDBサーバーを起動します。
ステップ2:Dockerイメージのビルド
Dockerfileを作成したら、以下のコマンドを実行してDockerイメージをビルドできます。
docker build -t mariadb-dev:latest .
このコマンドは、現在のディレクトリ (.
) をビルドコンテキストとして使用し、mariadb-dev:latest
という名前のタグ付きイメージを作成します。
Dockerイメージをビルドしたら、以下のコマンドを実行してコンテナを起動し、データベースを実行できます。
docker run -d --name mariadb-dev -p 3306:3306 mariadb-dev:latest
mariadb-dev
という名前のコンテナをデタッチモード (-d
) で起動します。- コンテナ内のポート3306をホストマシンのポート3306にマッピングします。
mariadb-dev:latest
イメージを使用します。
ステップ4:データベースへの接続
コンテナが起動したら、以下のコマンドを実行して、クライアントからMariaDBデータベースに接続できます。
mysql -u root -p -h localhost
上記のコマンドを実行する際、パスワードとしてDockerfileで設定した MARIADB_ROOT_PASSWORD
を使用する必要があります。
補足
- 上記は基本的な例であり、必要に応じてDockerfileをカスタマイズできます。
- データの永続化については、Docker volumesを使用する必要があります。
- セキュリティ対策として、公開鍵認証などの方法でデータベースへのアクセスを制限することを推奨します。
上記以外にも、Dockerを使って様々な開発環境を構築することができます。ご自身のニーズに合った環境を構築して、開発を効率化しましょう。
FROM mariadb:10.5
ENV MARIADB_ROOT_PASSWORD="password"
RUN apt-get update && apt-get install -y --no-install-recommends \
mariadb-server \
mariadb-client
RUN mkdir -p /var/lib/mysql
RUN chown mysql:mysql /var/lib/mysql
CMD ["mysqld"]
このイメージをビルドするには、以下のコマンドを実行します。
docker build -t mariadb-dev:latest .
docker run -d --name mariadb-dev -p 3306:3306 mariadb-dev:latest
mysql -u root -p -h localhost
このサンプルコードは、あくまでも基本的な例であり、必要に応じてカスタマイズできます。例えば、以下の点を変更できます。
- MariaDBのバージョン
- インストールする追加パッケージ
- データディレクトリの場所
- ログの設定
また、Docker volumesを使用してデータを永続化したり、環境変数を使用してデータベースの設定をカスタマイズしたりすることもできます。
Dockerを使って開発データベース用のDockerイメージを構築するその他の方法
MariaDBのような多くのデータベースベンダーは、公式のDockerイメージを公開しています。これらのイメージは、最新バージョンで定期的に更新されており、セキュリティパッチも適用されています。
公式イメージを使用する利点は以下の通りです。
- 最新かつ安全なバージョンを使用できる
- メンテナスが容易
- 信頼性が高い
- Docker Hubで目的のデータベースイメージを検索します。
- 以下のコマンドを実行してイメージをプルします。
docker pull <image_name>
docker run -d -p 3306:3306 <image_name>
例:
docker pull mariadb:10.5
docker run -d -p 3306:3306 mariadb:10.5
Docker Composeは、複数のコンテナをまとめて定義および管理するためのツールです。Dockerfileで個別にイメージを構築する代わりに、Docker Composeを使用してYAMLファイルで構成を定義することができます。
Docker Composeを使用する利点は以下の通りです。
- 複数のコンテナを簡単に構成および管理できる
- 依存関係を定義できる
- 設定をYAMLファイルで記述できる
Docker Composeで開発データベースを構築するには、以下の手順が必要です。
docker-compose.yml
という名前のYAMLファイルを作成します。- ファイルに、データベースコンテナと必要なその他のコンテナを定義します。
- 以下のコマンドを実行して、
docker-compose.yml
で定義した構成を起動します。
docker-compose up -d
version: "3.9"
services:
db:
image: mariadb:10.5
ports:
- "3306:3306"
クラウドサービスの利用
Amazon RDSやGoogle Cloud SQLのようなクラウドサービスを利用して、開発データベースを構築することもできます。これらのサービスは、データベースの管理をクラウドベンダーに任せることができ、メンテナンスの負担を軽減できます。
- セットアップと管理が簡単
- スケーラブル
- 高可用性
クラウドサービスで開発データベースを構築するには、各サービスのプロバイダのドキュメントを参照してください。
Dockerを使って開発データベース用のDockerイメージを構築するには、様々な方法があります。それぞれの方法には、利点と欠点があります。ご自身のニーズに合った方法を選択してください。
docker dockerfile mariadb